[Docstring-checkins] CVS: dps/dps/transforms references.py,1.7,1.8
Status: Pre-Alpha
Brought to you by:
goodger
From: David G. <go...@us...> - 2002-03-07 04:08:03
|
Update of /cvsroot/docstring/dps/dps/transforms In directory usw-pr-cvs1:/tmp/cvs-serv9233/dps/dps/transforms Modified Files: references.py Log Message: - Added support for symbolic footnotes and mixed manual/auto-numbered footnotes. Index: references.py =================================================================== RCS file: /cvsroot/docstring/dps/dps/transforms/references.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** references.py 22 Feb 2002 02:11:24 -0000 1.7 --- references.py 7 Mar 2002 04:01:40 -0000 1.8 *************** *** 366,369 **** --- 366,386 ---- """Keep track of unlabeled autonumbered footnotes.""" + symbols = [ + # The first six entries below are from section 12.51 of + # The Chicago Manual of Style, 14th edition. + '*', # asterisk/star + u'\u2020', # dagger † + u'\u2021', # double dagger ‡ + u'\u00A7', # section mark § + # (Should be parallels; perhaps u'\u2016' ‖? Not in HTML.) + u'\u00B6', # paragraph mark (pilcrow) ¶ + '#', # number sign + # The entries below were chosen arbitrarily. + u'\u2660', # spade suit ♠ + u'\u2663', # club suit ♣ + u'\u2665', # heart suit ♥ + u'\u2666', # diamond suit ♦ + ] + def transform(self, doctree): self.setup_transform(doctree) *************** *** 372,375 **** --- 389,393 ---- self.number_footnotes() self.number_footnote_references(startnum) + self.symbolize_footnotes() def number_footnotes(self): *************** *** 381,386 **** """ for footnote in self.doctree.autofootnotes: ! label = str(self.doctree.autofootnote_start) ! self.doctree.autofootnote_start += 1 footnote.insert(0, nodes.label('', label)) if footnote.hasattr('dupname'): --- 399,407 ---- """ for footnote in self.doctree.autofootnotes: ! while 1: ! label = str(self.doctree.autofootnote_start) ! self.doctree.autofootnote_start += 1 ! if not self.doctree.explicit_targets.has_key(label): ! break footnote.insert(0, nodes.label('', label)) if footnote.hasattr('dupname'): *************** *** 411,418 **** --- 432,473 ---- % len(self.autofootnote_labels)) self.doctree.messages += msg + for ref in self.doctree.autofootnote_refs[i:]: + if not (ref.resolved or ref.hasattr('refname')): + ref.parent.replace( + ref, nodes.problematic(ref.rawsource, + ref.rawsource)) break ref.resolved = 1 i += 1 + def symbolize_footnotes(self): + """Add symbols indexes to "[*]"-style footnotes and references.""" + labels = [] + for footnote in self.doctree.symbol_footnotes: + reps, index = divmod(self.doctree.symbol_footnote_start, + len(self.symbols)) + labeltext = self.symbols[index] * (reps + 1) + labels.append(labeltext) + footnote.insert(0, nodes.label('', labeltext)) + self.doctree.symbol_footnote_start += 1 + self.doctree.set_id(footnote) + i = 0 + for ref in self.doctree.symbol_footnote_refs: + try: + ref += nodes.Text(labels[i]) + ref['refid'] = self.doctree.symbol_footnotes[i]['id'] + except IndexError: + msg = self.doctree.reporter.error( + 'Too many symbol footnote references: only %s ' + 'corresponding footnotes available.' % len(labels)) + self.doctree.messages += msg + for ref in self.doctree.symbol_footnote_refs[i:]: + if not (ref.resolved or ref.hasattr('refid')): + ref.parent.replace( + ref, nodes.problematic(ref.rawsource, + ref.rawsource)) + break + ref.resolved = 1 + i += 1 class Substitutions(Transform): |