diff options
| author | goodger <goodger@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2003-01-17 19:45:54 +0000 |
|---|---|---|
| committer | goodger <goodger@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2003-01-17 19:45:54 +0000 |
| commit | ce023f176856687f0329c4d3fcc22e6e320bc753 (patch) | |
| tree | d91faea7219ce4e66d71e602e1660658d4caf65d /docutils/transforms | |
| parent | 3c59885646e7a7416b0f9d2a51417dcfb22a13ba (diff) | |
| download | docutils-ce023f176856687f0329c4d3fcc22e6e320bc753.tar.gz | |
Added check for circular indirect references.
git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk/docutils@1140 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
Diffstat (limited to 'docutils/transforms')
| -rw-r--r-- | docutils/transforms/references.py | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/docutils/transforms/references.py b/docutils/transforms/references.py index bdc56ccfc..5b1243ed5 100644 --- a/docutils/transforms/references.py +++ b/docutils/transforms/references.py @@ -221,7 +221,14 @@ class IndirectHyperlinks(Transform): reftarget = self.document.ids[reftarget_id] if isinstance(reftarget, nodes.target) \ and not reftarget.resolved and reftarget.hasattr('refname'): + if hasattr(target, 'multiply_indirect'): + #and target.multiply_indirect): + #del target.multiply_indirect + self.circular_indirect_reference(target) + return + target.multiply_indirect = 1 self.resolve_indirect_target(reftarget) # multiply indirect + del target.multiply_indirect if reftarget.hasattr('refuri'): target['refuri'] = reftarget['refuri'] if target.hasattr('name'): @@ -241,6 +248,12 @@ class IndirectHyperlinks(Transform): reftarget.referenced = 1 def nonexistent_indirect_target(self, target): + self.indirect_target_error(target, 'which does not exist') + + def circular_indirect_reference(self, target): + self.indirect_target_error(target, 'forming a circular reference') + + def indirect_target_error(self, target, explanation): naming = '' if target.hasattr('name'): naming = '"%s" ' % target['name'] @@ -248,9 +261,9 @@ class IndirectHyperlinks(Transform): else: reflist = self.document.refids.get(target['id'], []) naming += '(id="%s")' % target['id'] - msg = self.document.reporter.warning( - 'Indirect hyperlink target %s refers to target "%s", ' - 'which does not exist.' % (naming, target['refname']), + msg = self.document.reporter.error( + 'Indirect hyperlink target %s refers to target "%s", %s.' + % (naming, target['refname'], explanation), base_node=target) msgid = self.document.set_id(msg) for ref in reflist: |
