From 59dfd23bc8abc331b44c5f87e6a1b5dae3dc1036 Mon Sep 17 00:00:00 2001 From: Thibaut Horel Date: Thu, 4 Feb 2016 21:28:27 -0500 Subject: Nicer interface for BibTeX class --- BibTeX.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'BibTeX.py') diff --git a/BibTeX.py b/BibTeX.py index e07fe63..6558ebd 100644 --- a/BibTeX.py +++ b/BibTeX.py @@ -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() -- cgit v1.2.3-70-g09d2