diff options
Diffstat (limited to 'BibTeX.py')
| -rw-r--r-- | BibTeX.py | 18 |
1 files changed, 12 insertions, 6 deletions
@@ -33,7 +33,7 @@ class BibTeX: if k.lower() in self.entries: print >> sys.stderr, "Already have an entry named %s" % k return - self.entries[k.lower()] = ent + self[k] = ent def __contains__(self, key): return key.lower() in self.entries @@ -41,6 +41,12 @@ class BibTeX: def __getitem__(self, key): return self.entries[key.lower()] + def __setitem__(self, key, v): + self.entries[key.lower()] = v + + def __delitem__(self, key): + del self.entries[key.lower()] + def __iter__(self): return iter(self.entries.values()) @@ -51,7 +57,7 @@ class BibTeX: seen.clear() while ent.get('crossref'): try: - cr = self.entries[ent['crossref'].lower()] + cr = self[ent['crossref']] except KeyError: print "No such crossref: %s" % ent['crossref'] break @@ -63,8 +69,8 @@ class BibTeX: if cr.entryLine < ent.entryLine: print "Warning: crossref %s used after declaration" % cr.key - for k in cr.entries.keys(): - if ent.entries.has_key(k): + for k in cr: + if k in ent: print "ERROR: %s defined both in %s and in %s" % ( k, ent.key, cr.key) else: @@ -78,9 +84,9 @@ class BibTeX: rk = "title" for ent in self: - if ent.type in config.OMIT_ENTRIES or not ent.has_key(rk): + if ent.type in config.OMIT_ENTRIES or rk not in ent: ent.check() - del self.entries[ent.key.lower()] + del self[ent.key] class FileIter: |
