1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
Description: Handle problems encountered with docutils 0.6.
The problem here is that the child.data element does not always exist any
more. Apparently, the child element is sometimes a string instead. So, we
work around it by only executing the code in question if child.data can be
referenced. Thanks to Thomas Hille for research and the initial patch.
Bug-Debian: http://bugs.debian.org/561793
Author: Kenneth J. Pronovici <pronovic@debian.org>
--- a/epydoc/markup/restructuredtext.py
+++ b/epydoc/markup/restructuredtext.py
@@ -304,13 +304,14 @@ class _SummaryExtractor(NodeVisitor):
# Extract the first sentence.
for child in node:
if isinstance(child, docutils.nodes.Text):
- m = self._SUMMARY_RE.match(child.data)
- if m:
- summary_pieces.append(docutils.nodes.Text(m.group(1)))
- other = child.data[m.end():]
- if other and not other.isspace():
- self.other_docs = True
- break
+ if hasattr(child, 'data'):
+ m = self._SUMMARY_RE.match(child.data)
+ if m:
+ summary_pieces.append(docutils.nodes.Text(m.group(1)))
+ other = child.data[m.end():]
+ if other and not other.isspace():
+ self.other_docs = True
+ break
summary_pieces.append(child)
summary_doc = self.document.copy() # shallow copy
@@ -489,10 +490,11 @@ class _SplitFieldsTranslator(NodeVisitor
if (len(fbody[0]) > 0 and
isinstance(fbody[0][0], docutils.nodes.Text)):
child = fbody[0][0]
- if child.data[:1] in ':-':
- child.data = child.data[1:].lstrip()
- elif child.data[:2] in (' -', ' :'):
- child.data = child.data[2:].lstrip()
+ if hasattr(child, 'data'):
+ if child.data[:1] in ':-':
+ child.data = child.data[1:].lstrip()
+ elif child.data[:2] in (' -', ' :'):
+ child.data = child.data[2:].lstrip()
# Wrap the field body, and add a new field
self._add_field(tagname, arg, fbody)
|