From: <fel...@us...> - 2005-03-26 13:25:25
|
Author: felixwiemann Date: 2005-03-26 14:25:06 +0100 (Sat, 26 Mar 2005) New Revision: 3125 Modified: branches/multiple-ids/docutils/docutils/nodes.py branches/multiple-ids/docutils/docutils/transforms/references.py branches/multiple-ids/docutils/test/test_transforms/test_hyperlinks.py Log: made footnote and citation Targetable; do not propagate targets into footnotes or citations; added tests Modified: branches/multiple-ids/docutils/docutils/nodes.py =================================================================== --- branches/multiple-ids/docutils/docutils/nodes.py 2005-03-26 13:06:59 UTC (rev 3124) +++ branches/multiple-ids/docutils/docutils/nodes.py 2005-03-26 13:25:06 UTC (rev 3125) @@ -1191,8 +1191,8 @@ class comment(Special, Invisible, FixedTextElement): pass class substitution_definition(Special, Invisible, TextElement): pass class target(Special, Invisible, Inline, TextElement, Targetable): pass -class footnote(General, BackLinkable, Element, Labeled): pass -class citation(General, BackLinkable, Element, Labeled): pass +class footnote(General, BackLinkable, Element, Labeled, Targetable): pass +class citation(General, BackLinkable, Element, Labeled, Targetable): pass class label(Part, TextElement): pass class figure(General, Element): pass class caption(Part, TextElement): pass Modified: branches/multiple-ids/docutils/docutils/transforms/references.py =================================================================== --- branches/multiple-ids/docutils/docutils/transforms/references.py 2005-03-26 13:06:59 UTC (rev 3124) +++ branches/multiple-ids/docutils/docutils/transforms/references.py 2005-03-26 13:25:06 UTC (rev 3125) @@ -49,8 +49,11 @@ target.attributes.has_key('refname'))): continue next_node = target.next_node(ascend=1) + # Do not move names and ids into Invisibles (we'd lose the + # attributes) or different Targetables (e.g. footnotes). if (next_node is not None and - (not isinstance(next_node, nodes.Invisible) or + ((not isinstance(next_node, nodes.Invisible) and + not isinstance(next_node, nodes.Targetable)) or isinstance(next_node, nodes.target))): next_node['ids'].extend(target['ids']) next_node['names'].extend(target['names']) Modified: branches/multiple-ids/docutils/test/test_transforms/test_hyperlinks.py =================================================================== --- branches/multiple-ids/docutils/test/test_transforms/test_hyperlinks.py 2005-03-26 13:06:59 UTC (rev 3124) +++ branches/multiple-ids/docutils/test/test_transforms/test_hyperlinks.py 2005-03-26 13:25:06 UTC (rev 3125) @@ -311,6 +311,42 @@ anonymous embedded uri . """], +["""\ +.. _target: + +.. [1] Footnote; [1]_\ target_ +""", +"""\ +<document source="test data"> + <target ids="target" names="target"> + <footnote ids="id1" names="1"> + <label> + 1 + <paragraph> + Footnote; \n\ + <footnote_reference ids="id2" refid="id1"> + 1 + <reference name="target" refid="target"> + target +"""], +["""\ +.. _target: + +.. [cit] Citation; [cit]_\ target_ +""", +"""\ +<document source="test data"> + <target ids="target" names="target"> + <citation ids="cit" names="cit"> + <label> + cit + <paragraph> + Citation; \n\ + <citation_reference ids="id1" refid="cit"> + cit + <reference name="target" refid="target"> + target +"""], ]) totest['hyperlinks'] = ((PropagateTargets, AnonymousHyperlinks, |