diff options
| author | mmgilbe <mmgilbe@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2004-03-23 23:43:54 +0000 |
|---|---|---|
| committer | mmgilbe <mmgilbe@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2004-03-23 23:43:54 +0000 |
| commit | 7c5670b23be9cf71d655b74bccef68b0f354ba30 (patch) | |
| tree | d205ddd64a6e0d47d8aba0f6372c5f6f081e42c1 | |
| parent | 1912fe1240d6e9302623b5b71ee6d32df4c29595 (diff) | |
| download | docutils-7c5670b23be9cf71d655b74bccef68b0f354ba30.tar.gz | |
Verifying that external targets are truly targets and not indirect
references. This is because we are now adding a "name" attribute to
references in addition to targets. Note sure if this is correct!
git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@1882 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
| -rw-r--r-- | docutils/HISTORY.txt | 10 | ||||
| -rw-r--r-- | docutils/docutils/nodes.py | 1 | ||||
| -rw-r--r-- | docutils/docutils/parsers/rst/directives/images.py | 4 | ||||
| -rw-r--r-- | docutils/docutils/parsers/rst/states.py | 9 | ||||
| -rw-r--r-- | docutils/docutils/transforms/references.py | 3 | ||||
| -rwxr-xr-x | docutils/test/test_parsers/test_rst/test_directives/test_images.py | 4 | ||||
| -rwxr-xr-x | docutils/test/test_parsers/test_rst/test_footnotes.py | 6 | ||||
| -rwxr-xr-x | docutils/test/test_parsers/test_rst/test_inline_markup.py | 54 | ||||
| -rw-r--r-- | docutils/test/test_readers/test_pep/test_inline_markup.py | 2 | ||||
| -rwxr-xr-x | docutils/test/test_transforms/test_footnotes.py | 6 | ||||
| -rwxr-xr-x | docutils/test/test_transforms/test_hyperlinks.py | 62 | ||||
| -rw-r--r-- | docutils/test/test_transforms/test_peps.py | 2 |
12 files changed, 90 insertions, 73 deletions
diff --git a/docutils/HISTORY.txt b/docutils/HISTORY.txt index 935b06d1a..a8ab9da1b 100644 --- a/docutils/HISTORY.txt +++ b/docutils/HISTORY.txt @@ -151,6 +151,8 @@ Changes Since 0.3 - Made embedded-URIs' reference text omittable. Idea from Beni Cherniavsky. - Refactored explicit target processing code. + - Added name attribute to references containing the reference name only + through whitespace_normalize_name (no case changes). * docutils/parsers/rst/tableparser.py: @@ -171,6 +173,8 @@ Changes Since 0.3 * docutils/parsers/rst/directives/images.py: - Added "target" option to "image" directive. + - Added name attribute to references containing the reference name only + through whitespace_normalize_name (no case changes). * docutils/parsers/rst/directives/misc.py: @@ -200,6 +204,12 @@ Changes Since 0.3 - The "contents" directive does more work up-front, creating the "topic" and "title", and leaving the "pending" node for the transform. + +* docutils/transforms/references.py: + + - Verifying that external targets are truly targets and not indirect + references. This is because we are now adding a "name" attribute to + references in addition to targets. Note sure if this is correct! * docutils/transforms/universal.py: diff --git a/docutils/docutils/nodes.py b/docutils/docutils/nodes.py index ca585e888..a13c9733d 100644 --- a/docutils/docutils/nodes.py +++ b/docutils/docutils/nodes.py @@ -820,6 +820,7 @@ class document(Root, Structural, Element): def has_name(self, name): return self.nameids.has_key(name) + # "note" here is an imperative verb: "take note of". def note_implicit_target(self, target, msgnode=None): id = self.set_id(target, msgnode) self.set_name_id_map(target, id, msgnode, explicit=None) diff --git a/docutils/docutils/parsers/rst/directives/images.py b/docutils/docutils/parsers/rst/directives/images.py index a835d3d74..ab96a0a4e 100644 --- a/docutils/docutils/parsers/rst/directives/images.py +++ b/docutils/docutils/parsers/rst/directives/images.py @@ -14,6 +14,7 @@ __docformat__ = 'reStructuredText' import sys from docutils import nodes, utils from docutils.parsers.rst import directives, states +from docutils.nodes import whitespace_normalize_name try: import Image # PIL @@ -41,7 +42,8 @@ def image(name, arguments, options, content, lineno, if target_type == 'refuri': node_list = nodes.reference(refuri=data) elif target_type == 'refname': - node_list = nodes.reference(refname=data) + node_list = nodes.reference( + refname=data, name=whitespace_normalize_name(options['target'])) state.document.note_refname(node_list) else: # malformed target node_list = [data] # data is a system message diff --git a/docutils/docutils/parsers/rst/states.py b/docutils/docutils/parsers/rst/states.py index 252a38f37..9b77d5d49 100644 --- a/docutils/docutils/parsers/rst/states.py +++ b/docutils/docutils/parsers/rst/states.py @@ -113,6 +113,7 @@ from docutils import nodes, statemachine, utils, urischemes from docutils import ApplicationError, DataError from docutils.statemachine import StateMachineWS, StateWS from docutils.nodes import fully_normalize_name as normalize_name +from docutils.nodes import whitespace_normalize_name from docutils.parsers.rst import directives, languages, tableparser from docutils.parsers.rst.languages import en as _fallback_language_module @@ -867,7 +868,8 @@ class Inliner: else: target = None refname = normalize_name(text) - reference = nodes.reference(rawsource, text) + reference = nodes.reference(rawsource, text, + name=whitespace_normalize_name(text)) node_list = [reference] if rawsource[-2:] == '__': if target: @@ -1017,8 +1019,9 @@ class Inliner: def reference(self, match, lineno, anonymous=None): referencename = match.group('refname') refname = normalize_name(referencename) - referencenode = nodes.reference(referencename + match.group('refend'), - referencename) + referencenode = nodes.reference( + referencename + match.group('refend'), referencename, + name=whitespace_normalize_name(referencename)) if anonymous: referencenode['anonymous'] = 1 self.document.note_anonymous_ref(referencenode) diff --git a/docutils/docutils/transforms/references.py b/docutils/docutils/transforms/references.py index c754ee05c..cd5b5163f 100644 --- a/docutils/docutils/transforms/references.py +++ b/docutils/docutils/transforms/references.py @@ -353,7 +353,8 @@ class ExternalTargets(Transform): try: reflist = self.document.refnames[name] except KeyError, instance: - if target.referenced: + # @@@ First clause correct??? + if not isinstance(target, nodes.target) or target.referenced: continue msg = self.document.reporter.info( 'External hyperlink target "%s" is not referenced.' diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_images.py b/docutils/test/test_parsers/test_rst/test_directives/test_images.py index ee8d90401..58f6cffd2 100755 --- a/docutils/test/test_parsers/test_rst/test_directives/test_images.py +++ b/docutils/test/test_parsers/test_rst/test_directives/test_images.py @@ -268,7 +268,7 @@ totest['images'] = [ """, """\ <document source="test data"> - <reference refname="indirect"> + <reference name="indirect_" refname="indirect"> <image uri="picture.png"> """], ["""\ @@ -284,7 +284,7 @@ totest['images'] = [ <document source="test data"> <reference refuri="a/multi/line/uri"> <image uri="picture.png"> - <reference refname="a multi line internal reference"> + <reference name="`a multi line internal reference`_" refname="a multi line internal reference"> <image uri="picture.png"> """], ["""\ diff --git a/docutils/test/test_parsers/test_rst/test_footnotes.py b/docutils/test/test_parsers/test_rst/test_footnotes.py index 00e5c1f5d..49bff5a4b 100755 --- a/docutils/test/test_parsers/test_rst/test_footnotes.py +++ b/docutils/test/test_parsers/test_rst/test_footnotes.py @@ -179,13 +179,13 @@ the footnotes: first_, second_, third_. <paragraph> Here are some internal cross-references to the targets generated by the footnotes: \n\ - <reference refname="first"> + <reference name="first" refname="first"> first , \n\ - <reference refname="second"> + <reference name="second" refname="second"> second , \n\ - <reference refname="third"> + <reference name="third" refname="third"> third . """], diff --git a/docutils/test/test_parsers/test_rst/test_inline_markup.py b/docutils/test/test_parsers/test_rst/test_inline_markup.py index 10893f069..4637e1e11 100755 --- a/docutils/test/test_parsers/test_rst/test_inline_markup.py +++ b/docutils/test/test_parsers/test_rst/test_inline_markup.py @@ -280,7 +280,7 @@ ref_ """\ <document source="test data"> <paragraph> - <reference refname="ref"> + <reference name="ref" refname="ref"> ref """], ["""\ @@ -289,7 +289,7 @@ ref__ """\ <document source="test data"> <paragraph> - <reference anonymous="1"> + <reference anonymous="1" name="ref"> ref """], ["""\ @@ -299,19 +299,19 @@ but not _ref_ or __attr__ or object.__attr__ """\ <document source="test data"> <paragraph> - <reference refname="ref"> + <reference name="ref" refname="ref"> ref , \n\ - <reference refname="r"> + <reference name="r" refname="r"> r , \n\ - <reference refname="r_e-f"> + <reference name="r_e-f" refname="r_e-f"> r_e-f , - - <reference refname="ref"> + <reference name="ref" refname="ref"> ref , and \n\ - <reference anonymous="1"> + <reference anonymous="1" name="anonymousref"> anonymousref , but not _ref_ or __attr__ or object.__attr__ @@ -325,7 +325,7 @@ totest['phrase_references'] = [ """\ <document source="test data"> <paragraph> - <reference refname="phrase reference"> + <reference name="phrase reference" refname="phrase reference"> phrase reference """], ["""\ @@ -334,7 +334,7 @@ totest['phrase_references'] = [ """\ <document source="test data"> <paragraph> - <reference anonymous="1"> + <reference anonymous="1" name="anonymous reference"> anonymous reference """], ["""\ @@ -344,7 +344,7 @@ across lines`_ """\ <document source="test data"> <paragraph> - <reference refname="phrase reference across lines"> + <reference name="phrase reference across lines" refname="phrase reference across lines"> phrase reference across lines """], @@ -354,7 +354,7 @@ across lines`_ """\ <document source="test data"> <paragraph> - <reference refname="phrase`_ reference"> + <reference name="phrase`_ reference" refname="phrase`_ reference"> phrase`_ reference """], ["""\ @@ -398,7 +398,7 @@ Invalid phrase reference: <problematic id="id2" refid="id1"> ` phrase \n\ - <reference refname="reference"> + <reference name="reference" refname="reference"> reference without closing backquote <system_message backrefs="id2" id="id1" level="2" line="1" source="test data" type="WARNING"> @@ -414,7 +414,7 @@ Invalid phrase reference: <problematic id="id2" refid="id1"> ` anonymous phrase \n\ - <reference anonymous="1"> + <reference anonymous="1" name="reference"> reference without closing backquote <system_message backrefs="id2" id="id1" level="2" line="1" source="test data" type="WARNING"> @@ -430,7 +430,7 @@ totest['embedded_URIs'] = [ """\ <document source="test data"> <paragraph> - <reference refuri="http://example.com"> + <reference name="phrase reference" refuri="http://example.com"> phrase reference <target id="phrase-reference" name="phrase reference" refuri="http://example.com"> """], @@ -440,7 +440,7 @@ totest['embedded_URIs'] = [ """\ <document source="test data"> <paragraph> - <reference refuri="http://example.com"> + <reference name="anonymous reference" refuri="http://example.com"> anonymous reference """], ["""\ @@ -450,7 +450,7 @@ totest['embedded_URIs'] = [ """\ <document source="test data"> <paragraph> - <reference refuri="http://example.com"> + <reference name="embedded URI on next line" refuri="http://example.com"> embedded URI on next line """], ["""\ @@ -460,7 +460,7 @@ long/path>`__ """\ <document source="test data"> <paragraph> - <reference refuri="http://example.com/long/path"> + <reference name="embedded URI across lines" refuri="http://example.com/long/path"> embedded URI across lines """], ["""\ @@ -470,7 +470,7 @@ long/path /and /whitespace>`__ """\ <document source="test data"> <paragraph> - <reference refuri="http://example.com/long/path/and/whitespace"> + <reference name="embedded URI with whitespace" refuri="http://example.com/long/path/and/whitespace"> embedded URI with whitespace """], ["""\ @@ -482,10 +482,10 @@ long/path /and /whitespace>`__ """\ <document source="test data"> <paragraph> - <reference refuri="mailto:jdoe@example.com"> + <reference name="embedded email address" refuri="mailto:jdoe@example.com"> embedded email address <paragraph> - <reference refuri="mailto:jdoe@example.com"> + <reference name="embedded email address broken across lines" refuri="mailto:jdoe@example.com"> embedded email address broken across lines """], ["""\ @@ -504,22 +504,22 @@ See `HTML Anchors: \\<a>`_. """\ <document source="test data"> <paragraph> - <reference anonymous="1"> + <reference anonymous="1" name="embedded URI with too much whitespace < http://example.com/ long/path /and /whitespace >"> embedded URI with too much whitespace < http://example.com/ long/path /and /whitespace > <paragraph> - <reference anonymous="1"> + <reference anonymous="1" name="embedded URI with too much whitespace at end <http://example.com/ long/path /and /whitespace >"> embedded URI with too much whitespace at end <http://example.com/ long/path /and /whitespace > <paragraph> - <reference anonymous="1"> + <reference anonymous="1" name="embedded URI with no preceding whitespace<http://example.com>"> embedded URI with no preceding whitespace<http://example.com> <paragraph> - <reference anonymous="1"> + <reference anonymous="1" name="escaped URI <http://example.com>"> escaped URI <http://example.com> <paragraph> See \n\ - <reference refname="html anchors: <a>"> + <reference name="HTML Anchors: <a>" refname="html anchors: <a>"> HTML Anchors: <a> . """], @@ -535,11 +535,11 @@ Relative URIs' reference text can be omitted: <paragraph> Relative URIs' reference text can be omitted: <paragraph> - <reference refuri="reference"> + <reference name="reference" refuri="reference"> reference <target id="reference" name="reference" refuri="reference"> <paragraph> - <reference refuri="anonymous"> + <reference name="anonymous" refuri="anonymous"> anonymous """], ] diff --git a/docutils/test/test_readers/test_pep/test_inline_markup.py b/docutils/test/test_readers/test_pep/test_inline_markup.py index 7ae69e8ec..eb18ebe8b 100644 --- a/docutils/test/test_readers/test_pep/test_inline_markup.py +++ b/docutils/test/test_readers/test_pep/test_inline_markup.py @@ -114,7 +114,7 @@ For *completeness*, _`let's` ``test`` **other** forms_ <strong> other \n\ - <reference refname="forms"> + <reference name="forms" refname="forms"> forms \n\ <substitution_reference refname="of"> diff --git a/docutils/test/test_transforms/test_footnotes.py b/docutils/test/test_transforms/test_footnotes.py index 4da43e055..0eddbfaf0 100755 --- a/docutils/test/test_transforms/test_footnotes.py +++ b/docutils/test/test_transforms/test_footnotes.py @@ -144,13 +144,13 @@ generated by the footnotes: first_, second_, third_. <paragraph> Here are some internal cross-references to the implicit targets generated by the footnotes: \n\ - <reference refname="first"> + <reference name="first" refname="first"> first , \n\ - <reference refname="second"> + <reference name="second" refname="second"> second , \n\ - <reference refname="third"> + <reference name="third" refname="third"> third . """], diff --git a/docutils/test/test_transforms/test_hyperlinks.py b/docutils/test/test_transforms/test_hyperlinks.py index bd4740441..bee1aac87 100755 --- a/docutils/test/test_transforms/test_hyperlinks.py +++ b/docutils/test/test_transforms/test_hyperlinks.py @@ -38,7 +38,7 @@ direct_ external """\ <document source="test data"> <paragraph> - <reference refuri="http://direct"> + <reference name="direct" refuri="http://direct"> direct external <target id="direct" name="direct" refuri="http://direct"> @@ -52,7 +52,7 @@ indirect_ external """\ <document source="test data"> <paragraph> - <reference refuri="http://indirect"> + <reference name="indirect" refuri="http://indirect"> indirect external <target id="indirect" name="indirect" refuri="http://indirect"> @@ -67,7 +67,7 @@ direct_ internal <document source="test data"> <target id="direct" name="direct"> <paragraph> - <reference refid="direct"> + <reference name="direct" refid="direct"> direct internal """], @@ -83,7 +83,7 @@ indirect_ internal <document source="test data"> <target id="ztarget" name="ztarget"> <paragraph> - <reference refid="ztarget"> + <reference name="indirect" refid="ztarget"> indirect internal <target id="indirect2" name="indirect2" refid="ztarget"> @@ -103,7 +103,7 @@ indirect_ internal <title> Implicit <paragraph> - <reference refid="implicit"> + <reference name="indirect" refid="implicit"> indirect internal <target id="indirect" name="indirect" refid="implicit"> @@ -123,7 +123,7 @@ Implicit <title> Implicit <paragraph> - <reference refid="implicit"> + <reference name="multiply-indirect" refid="implicit"> multiply-indirect internal <target id="multiply-indirect" name="multiply-indirect" refid="implicit"> @@ -191,7 +191,7 @@ __ http://direct """\ <document source="test data"> <paragraph> - <reference anonymous="1" refuri="http://direct"> + <reference anonymous="1" name="direct external" refuri="http://direct"> direct external <target anonymous="1" id="id1" refuri="http://direct"> """], @@ -204,7 +204,7 @@ __ xtarget_ """\ <document source="test data"> <paragraph> - <reference anonymous="1" refuri="http://indirect"> + <reference anonymous="1" name="indirect external" refuri="http://indirect"> indirect external <target anonymous="1" id="id1" refuri="http://indirect"> <target id="xtarget" name="xtarget" refuri="http://indirect"> @@ -218,7 +218,7 @@ __ <document source="test data"> <target anonymous="1" id="id1"> <paragraph> - <reference anonymous="1" refid="id1"> + <reference anonymous="1" name="direct internal" refid="id1"> direct internal """], ["""\ @@ -232,7 +232,7 @@ __ ztarget_ <document source="test data"> <target id="ztarget" name="ztarget"> <paragraph> - <reference anonymous="1" refid="ztarget"> + <reference anonymous="1" name="indirect internal" refid="ztarget"> indirect internal <target anonymous="1" id="id1" refid="ztarget"> """], @@ -277,13 +277,13 @@ Another reference to the same `embedded URI`_. <document source="test data"> <paragraph> An \n\ - <reference refuri="http://direct"> + <reference name="embedded uri" refuri="http://direct"> embedded uri <target id="embedded-uri" name="embedded uri" refuri="http://direct"> . <paragraph> Another reference to the same \n\ - <reference refuri="http://direct"> + <reference name="embedded URI" refuri="http://direct"> embedded URI . """], @@ -294,7 +294,7 @@ An `anonymous embedded uri <http://direct>`__. <document source="test data"> <paragraph> An \n\ - <reference refuri="http://direct"> + <reference name="anonymous embedded uri" refuri="http://direct"> anonymous embedded uri . """], @@ -317,7 +317,7 @@ By this `internal hyperlink`_ referemce. This paragraph referenced. <paragraph> By this \n\ - <reference refid="internal-hyperlink"> + <reference name="internal hyperlink" refid="internal-hyperlink"> internal hyperlink referemce. """], @@ -340,11 +340,11 @@ The results of the transform are not visible at the XML level. This paragraph referenced. <paragraph> By this \n\ - <reference refid="internal-hyperlink"> + <reference name="internal hyperlink" refid="internal-hyperlink"> internal hyperlink referemce as well as by this \n\ - <reference refid="chained"> + <reference name="chained" refid="chained"> chained reference. <paragraph> @@ -359,7 +359,7 @@ The results of the transform are not visible at the XML level. <document source="test data"> <target id="external-hyperlink" name="external hyperlink" refuri="http://uri"> <paragraph> - <reference refuri="http://uri"> + <reference name="External hyperlink" refuri="http://uri"> External hyperlink reference. """], @@ -387,11 +387,11 @@ and a chained_ reference too. <target id="chained" name="chained" refuri="http://uri"> <target id="external-hyperlink" name="external hyperlink" refuri="http://uri"> <paragraph> - <reference refuri="http://uri"> + <reference name="External hyperlink" refuri="http://uri"> External hyperlink reference and a \n\ - <reference refuri="http://uri"> + <reference name="chained" refuri="http://uri"> chained reference too. """], @@ -406,7 +406,7 @@ and a chained_ reference too. <target id="external-hyperlink" name="external hyperlink" refuri="http://uri"> <target id="indirect-hyperlink" name="indirect hyperlink" refuri="http://uri"> <paragraph> - <reference refuri="http://uri"> + <reference name="Indirect hyperlink" refuri="http://uri"> Indirect hyperlink reference. """], @@ -423,10 +423,10 @@ Chained_ `indirect hyperlink`_ reference. <target id="chained" name="chained" refuri="http://uri"> <target id="indirect-hyperlink" name="indirect hyperlink" refuri="http://uri"> <paragraph> - <reference refuri="http://uri"> + <reference name="Chained" refuri="http://uri"> Chained \n\ - <reference refuri="http://uri"> + <reference name="indirect hyperlink" refuri="http://uri"> indirect hyperlink reference. """], @@ -453,19 +453,19 @@ __ <target anonymous="1" id="id4" refuri="http://indirect.external"> <target anonymous="1" id="id5"> <paragraph> - <reference anonymous="1" refuri="http://full"> + <reference anonymous="1" name="Full syntax anonymous external hyperlink reference" refuri="http://full"> Full syntax anonymous external hyperlink reference , - <reference anonymous="1" refuri="http://simplified"> + <reference anonymous="1" name="chained anonymous external reference" refuri="http://simplified"> chained anonymous external reference , - <reference anonymous="1" refuri="http://simplified"> + <reference anonymous="1" name="simplified syntax anonymous external hyperlink reference" refuri="http://simplified"> simplified syntax anonymous external hyperlink reference , - <reference anonymous="1" refuri="http://indirect.external"> + <reference anonymous="1" name="indirect anonymous hyperlink reference" refuri="http://indirect.external"> indirect anonymous hyperlink reference , - <reference anonymous="1" refid="id5"> + <reference anonymous="1" name="internal anonymous hyperlink reference" refid="id5"> internal anonymous hyperlink reference . """], @@ -480,7 +480,7 @@ Duplicate external target_'s (different URIs): <document source="test data"> <paragraph> Duplicate external \n\ - <reference refname="target"> + <reference name="target" refname="target"> target 's (different URIs): <target dupname="target" id="target" refuri="first"> @@ -531,11 +531,11 @@ __ http://example.org <target id="external" name="external" refuri="http://uri"> <target id="indirect" name="indirect" refuri="http://uri"> <target id="internal" name="internal"> - <reference refuri="http://uri"> + <reference name="external_" refuri="http://uri"> <image uri="picture.png"> - <reference refuri="http://uri"> + <reference name="indirect_" refuri="http://uri"> <image uri="picture.png"> - <reference refid="internal"> + <reference name="internal_" refid="internal"> <image uri="picture.png"> """], ]) diff --git a/docutils/test/test_transforms/test_peps.py b/docutils/test/test_transforms/test_peps.py index 28fa68af2..5710f9ec7 100644 --- a/docutils/test/test_transforms/test_peps.py +++ b/docutils/test/test_transforms/test_peps.py @@ -44,7 +44,7 @@ A "References" section should be generated. <document source="test data"> <paragraph> A target exists, here's the \n\ - <reference refname="reference"> + <reference name="reference" refname="reference"> reference \n\ <footnote_reference auto="1" id="id3" refname="target_note: id2"> |
