summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormmgilbe <mmgilbe@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2004-03-23 23:43:54 +0000
committermmgilbe <mmgilbe@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2004-03-23 23:43:54 +0000
commit7c5670b23be9cf71d655b74bccef68b0f354ba30 (patch)
treed205ddd64a6e0d47d8aba0f6372c5f6f081e42c1
parent1912fe1240d6e9302623b5b71ee6d32df4c29595 (diff)
downloaddocutils-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.txt10
-rw-r--r--docutils/docutils/nodes.py1
-rw-r--r--docutils/docutils/parsers/rst/directives/images.py4
-rw-r--r--docutils/docutils/parsers/rst/states.py9
-rw-r--r--docutils/docutils/transforms/references.py3
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_directives/test_images.py4
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_footnotes.py6
-rwxr-xr-xdocutils/test/test_parsers/test_rst/test_inline_markup.py54
-rw-r--r--docutils/test/test_readers/test_pep/test_inline_markup.py2
-rwxr-xr-xdocutils/test/test_transforms/test_footnotes.py6
-rwxr-xr-xdocutils/test/test_transforms/test_hyperlinks.py62
-rw-r--r--docutils/test/test_transforms/test_peps.py2
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">