aboutsummaryrefslogtreecommitdiffstats
path: root/BibTeX.py
diff options
context:
space:
mode:
authorThibaut Horel <thibaut.horel@gmail.com>2016-02-04 21:28:27 -0500
committerThibaut Horel <thibaut.horel@gmail.com>2016-02-04 21:28:27 -0500
commit59dfd23bc8abc331b44c5f87e6a1b5dae3dc1036 (patch)
treeaa12195663550b7099011785521eb1c6fbc88dda /BibTeX.py
parentb0a3a31d5caaeafb63ff415fc9b86b537b759f21 (diff)
downloadanonbib-59dfd23bc8abc331b44c5f87e6a1b5dae3dc1036.tar.gz
Nicer interface for BibTeX class
Diffstat (limited to 'BibTeX.py')
-rw-r--r--BibTeX.py19
1 files changed, 14 insertions, 5 deletions
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()