summaryrefslogtreecommitdiff
path: root/docutils/transforms
diff options
context:
space:
mode:
authorgoodger <goodger@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2004-05-04 00:38:15 +0000
committergoodger <goodger@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2004-05-04 00:38:15 +0000
commit1edd0cd8fca10c572d723608dac92e30f8e42ce2 (patch)
treed93c4a6ac033a05d858b10261a964cf491ad6b89 /docutils/transforms
parent00e17f6e2ad5d5ab863d00bb662dcf7e340b9275 (diff)
downloaddocutils-1edd0cd8fca10c572d723608dac92e30f8e42ce2.tar.gz
Added specific error message for duplicate targets.
git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk/docutils@2022 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
Diffstat (limited to 'docutils/transforms')
-rw-r--r--docutils/transforms/references.py16
-rw-r--r--docutils/transforms/universal.py11
2 files changed, 17 insertions, 10 deletions
diff --git a/docutils/transforms/references.py b/docutils/transforms/references.py
index 0e41dae84..2786cd562 100644
--- a/docutils/transforms/references.py
+++ b/docutils/transforms/references.py
@@ -217,13 +217,11 @@ class IndirectHyperlinks(Transform):
reftarget_id = self.document.nameids.get(refname)
if not reftarget_id:
# Check the unknown_reference_resolvers
- handled = 0
- for i in self.document.transformer.unknown_reference_resolvers:
- print `target`
- if i(target):
- handled = 1
+ for resolver_function in (self.document.transformer
+ .unknown_reference_resolvers):
+ if resolver_function(target):
break
- if not handled:
+ else:
self.nonexistent_indirect_target(target)
return
reftarget = self.document.ids[reftarget_id]
@@ -256,7 +254,11 @@ class IndirectHyperlinks(Transform):
reftarget.referenced = 1
def nonexistent_indirect_target(self, target):
- self.indirect_target_error(target, 'which does not exist')
+ if self.document.nameids.has_key(target['refname']):
+ self.indirect_target_error(target, 'which is a duplicate, and '
+ 'cannot be used as a unique reference')
+ else:
+ self.indirect_target_error(target, 'which does not exist')
def circular_indirect_reference(self, target):
self.indirect_target_error(target, 'forming a circular reference')
diff --git a/docutils/transforms/universal.py b/docutils/transforms/universal.py
index 4e7d0b457..45e74f3e3 100644
--- a/docutils/transforms/universal.py
+++ b/docutils/transforms/universal.py
@@ -188,9 +188,14 @@ class FinalCheckVisitor(nodes.SparseNodeVisitor):
if resolver_function(node):
break
else:
- msg = self.document.reporter.error(
- 'Unknown target name: "%s".' % (node['refname']),
- base_node=node)
+ if self.document.nameids.has_key(refname):
+ msg = self.document.reporter.error(
+ 'Duplicate target name, cannot be used as a unique '
+ 'reference: "%s".' % (node['refname']), base_node=node)
+ else:
+ msg = self.document.reporter.error(
+ 'Unknown target name: "%s".' % (node['refname']),
+ base_node=node)
msgid = self.document.set_id(msg)
prb = nodes.problematic(
node.rawsource, node.rawsource, refid=msgid)