diff options
Diffstat (limited to 'BibTeX.py')
| -rw-r--r-- | BibTeX.py | 19 |
1 files changed, 14 insertions, 5 deletions
@@ -35,10 +35,19 @@ class BibTeX: return self.entries[k.lower()] = ent + def __contains__(self, key): + return key.lower() in self.entries + + def __getitem__(self, key): + return self.entries[key.lower()] + + def __iter__(self): + return iter(self.entries.values()) + def resolve(self): """Validate all entries in this file, and resolve cross-references""" seen = {} - for ent in self.entries.values(): + for ent in self: seen.clear() while ent.get('crossref'): try: @@ -68,7 +77,7 @@ class BibTeX: # entry will have a title. rk = "title" - for ent in self.entries.values(): + for ent in self: if ent.type in config.OMIT_ENTRIES or not ent.has_key(rk): ent.check() del self.entries[ent.key.lower()] @@ -352,7 +361,7 @@ def parseFile(filename, result=None): p = Parser(f, {}, result) r = p.parse() r.resolve() - for e in r.entries.values(): + for e in r: e.check() return r @@ -363,7 +372,7 @@ def parseString(string, result=None): p = Parser(f, {}, result) r = p.parse() r.resolve() - for e in r.entries.values(): + for e in r: e.check() return r @@ -375,7 +384,7 @@ if __name__ == '__main__': r = parseFile(fname) - for e in r.entries.values(): + for e in r: if e.type in ("proceedings", "journal"): continue print e.to_html() |
