diff options
| author | goodger <goodger@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2004-05-04 00:38:15 +0000 |
|---|---|---|
| committer | goodger <goodger@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2004-05-04 00:38:15 +0000 |
| commit | 1edd0cd8fca10c572d723608dac92e30f8e42ce2 (patch) | |
| tree | d93c4a6ac033a05d858b10261a964cf491ad6b89 /docutils/transforms | |
| parent | 00e17f6e2ad5d5ab863d00bb662dcf7e340b9275 (diff) | |
| download | docutils-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.py | 16 | ||||
| -rw-r--r-- | docutils/transforms/universal.py | 11 |
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) |
