aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2010-05-18 19:07:14 +0000
committerNick Mathewson <nickm@torproject.org>2010-05-18 19:07:14 +0000
commitf6712eaaa8e3e14bf8b36a7ab9b83742ffc6d570 (patch)
tree9bfc8eb7342c29e9813bf9e4477b03971221f4c8
parent62f3ebac0834d0e2f58b32ae2f58c8761b5d42f6 (diff)
downloadanonbib-f6712eaaa8e3e14bf8b36a7ab9b83742ffc6d570.tar.gz
Another fix to make anonbib.bib into valid bibtex.
Apparently, when you have a crossref in a bibtex file, the thing you refer to needs to be defined _after_ you use it. Wild! This patch and the previous one are derived from a patch by Eugene Vasserman. svn:r340
-rw-r--r--BibTeX.py5
1 files changed, 5 insertions, 0 deletions
diff --git a/BibTeX.py b/BibTeX.py
index c87cb12..51dd5b8 100644
--- a/BibTeX.py
+++ b/BibTeX.py
@@ -85,6 +85,9 @@ class BibTeX:
seen[cr.key] = 1
del ent.entries['crossref']
+ 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):
print "ERROR: %s defined both in %s and in %s"%(
@@ -273,6 +276,7 @@ class BibTeXEntry:
self.type = type # What kind of entry is it? (@book,@injournal,etc)
self.key = key # What key does it have?
self.entries = entries # Map from key to value.
+ self.entryLine = 0 # Defined on this line number
def get(self, k, v=None):
return self.entries.get(k,v)
def has_key(self, k):
@@ -1158,6 +1162,7 @@ class Parser:
for i in xrange(1,len(v),2):
d[v[i].lower()] = v[i+1]
ent = BibTeXEntry(self.curEntType, key, d)
+ ent.entryLine = self.entryLine
self.result.addEntry(ent)
return line