MCPcopy Create free account
hub / github.com/HzaCode/OneCite / _parse_bibtex

Method _parse_bibtex

onecite/pipeline/parser.py:43–80  ·  view source on GitHub ↗

Parse BibTeX format content

(self, bibtex_content: str)

Source from the content-addressed store, hash-verified

41 raise ParseError(f"Unsupported input type: {input_type}")
42
43 def _parse_bibtex(self, bibtex_content: str) -> List[RawEntry]:
44 """Parse BibTeX format content"""
45 entries = []
46 try:
47 bib_database = bibtexparser.loads(bibtex_content)
48 for i, entry in enumerate(bib_database.entries):
49 original_entry = dict(entry)
50
51 self.logger.debug(f"Entry {i}: original fields: {list(original_entry.keys())}")
52
53 raw_entry: RawEntry = {
54 'id': i,
55 'raw_text': str(entry),
56 'doi': entry.get('doi'),
57 'url': entry.get('url'),
58 'query_string': None,
59 'original_entry': original_entry
60 }
61
62 # If no DOI is available, generate query string
63 if not raw_entry['doi']:
64 query_parts = []
65 if 'title' in entry:
66 query_parts.append(entry['title'])
67 if 'author' in entry:
68 query_parts.append(entry['author'])
69 if 'year' in entry:
70 query_parts.append(entry['year'])
71 raw_entry['query_string'] = ' '.join(query_parts)
72
73 entries.append(raw_entry)
74
75 self.logger.info(f"Successfully parsed {len(entries)} BibTeX entries")
76 return entries
77
78 except Exception as e:
79 self.logger.error(f"BibTeX parsing failed: {str(e)}")
80 raise ParseError(f"BibTeX parsing failed: {str(e)}")
81
82 def _parse_text(self, text_content: str) -> List[RawEntry]:
83 """Parse plain text format content"""

Callers 1

parseMethod · 0.95

Calls 1

ParseErrorClass · 0.85

Tested by

no test coverage detected