Rev 5215: Skip all not implemented nodes. in file:///home/vila/src/bzr/bugs/219334-texinfo/
Vincent Ladeuil
v.ladeuil+lp at free.fr
Sat May 8 09:19:38 BST 2010
At file:///home/vila/src/bzr/bugs/219334-texinfo/
------------------------------------------------------------
revno: 5215
revision-id: v.ladeuil+lp at free.fr-20100508081938-5wou5081f8svjs1h
parent: v.ladeuil+lp at free.fr-20100507215014-ee2mzr80gua5669c
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: texinfo
timestamp: Sat 2010-05-08 10:19:38 +0200
message:
Skip all not implemented nodes.
* doc/en/user-guide/index-plain.txt:
Get rid of the U+2014 trick, I can't find where it's used anyway.
* bzrlib/doc_generate/writers/texinfo.py:
(TexinfoTranslator): Forget about chunks, we just produce text
anyway, the newlines are embedded when needed so the resulting
text can always be joined with ''. Skip nodes that are not yet
implemented.
(TexinfoTranslator.depart_tgroup): Not all tables define column
titles, needs investigation.
(TexinfoTranslator.depart_reference): Mark as incomplete.
-------------- next part --------------
=== modified file 'bzrlib/doc_generate/writers/texinfo.py'
--- a/bzrlib/doc_generate/writers/texinfo.py 2010-05-07 21:50:14 +0000
+++ b/bzrlib/doc_generate/writers/texinfo.py 2010-05-08 08:19:38 +0000
@@ -21,6 +21,7 @@
writers,
)
+DEBUG = 0
class TexinfoWriter(writers.Writer):
@@ -42,14 +43,6 @@
class TexinfoTranslator(nodes.NodeVisitor):
- # Sphinx and texinfo doesn't use the same names for the section levels,
- # since this can be confusing, here are the correspondances (sphinx ->
- # texinfo).
- # part -> chapter
- # chapter -> section
- # section -> subsection
- # subsection -> subsubsection
- # Additionally, sphinx defines subsubsections and paragraphs
section_names = ['chapter', 'section', 'subsection', 'subsubsection']
"""texinfo section names differ from the sphinx ones.
@@ -60,12 +53,12 @@
section -> subsection
subsection -> subsubsection
- Additionally, sphinx defines subsubsections and paragraphs.
+ Additionally, sphinx defines subsubsections and paragraphs which are
+ handled as @heading (unnumbered).
"""
def __init__(self, document, builder):
nodes.NodeVisitor.__init__(self, document)
- self.chunks = []
# toctree uses some nodes for different purposes (namely:
# compact_paragraph, bullet_list, reference, list_item) that needs to
# know when they are proessing a toctree. The following attributes take
@@ -88,19 +81,19 @@
# The whole document
def visit_document(self, node):
- # The debug killer trick
- #import sys
- #sys.stderr.write(node.pformat())
- set_item_list_collector(node, 'chunk')
+ if DEBUG:
+ import sys
+ sys.stdout.write(node.pformat().encode('utf8'))
+ set_item_list_collector(node, 'text')
def depart_document(self, node):
- self.body = ''.join(node['chunk'])
+ self.body = ''.join(node['text'])
# Layout
def visit_section(self, node):
self.section_level += 1
- set_item_list_collector(node, 'chunk')
+ set_item_list_collector(node, 'text')
def depart_section(self, node):
try:
@@ -109,8 +102,8 @@
# Just use @heading, it's not numbered anyway
section_name = 'heading'
section_cmd = '@%s %s\n' % (section_name, node['title'])
- text = ''.join(node['chunk'])
- node.parent.collect_chunk(section_cmd + text)
+ text = ''.join(node['text'])
+ node.parent.collect_text(section_cmd + text)
self.section_level -= 1
def visit_topic(self, node):
@@ -126,7 +119,7 @@
# End the paragraph with a new line (or '' depending on the parent) and
# leave a blank line after it.
text = ''.join(node['text']) + self.paragraph_sep * 2
- node.parent.collect_chunk(text)
+ node.parent.collect_text(text)
def visit_compact_paragraph(self, node):
set_item_list_collector(node, 'text')
@@ -137,9 +130,9 @@
def depart_compact_paragraph(self, node):
if node.has_key('toctree'):
- node.parent.collect_chunk('@menu\n')
- node.parent.collect_chunk(''.join(node['text']))
- node.parent.collect_chunk('@end menu\n')
+ node.parent.collect_text('@menu\n')
+ node.parent.collect_text(''.join(node['text']))
+ node.parent.collect_text('@end menu\n')
self.in_toctree = False
elif self.in_toctree:
# * FIRST-ENTRY-NAME:(FILENAME)NODENAME. DESCRIPTION
@@ -152,48 +145,48 @@
# XXX: What if :maxdepth: is not 1 ?
text = '* %s: (%s)%s. %s\n' % (entry_name, file_name,
node_name, description)
- node.parent.collect_chunk(text)
+ node.parent.collect_text(text)
else:
# End the paragraph with a new line (or '' depending on the parent)
# and leave a blank line after it.
text = ''.join(node['text']) + self.paragraph_sep * 2
- node.parent.collect_chunk(text)
+ node.parent.collect_text(text)
def visit_literal_block(self, node):
set_item_collector(node, 'text')
def depart_literal_block(self, node):
text = '@samp{%s}' % ''.join(node['text']) + self.paragraph_sep * 2
- node.parent.collect_chunk(text)
+ node.parent.collect_text(text)
def visit_block_quote(self, node):
- set_item_list_collector(node, 'chunk')
+ set_item_list_collector(node, 'text')
def depart_block_quote(self, node):
- node.parent.collect_chunk('@example\n')
- node.parent.collect_chunk(''.join(node['chunk']))
- node.parent.collect_chunk('@end example\n\n')
+ node.parent.collect_text('@example\n')
+ node.parent.collect_text(''.join(node['text']))
+ node.parent.collect_text('@end example\n\n')
def visit_note(self, node):
- pass
+ raise nodes.SkipNode # Not implemented yet
def depart_warning(self, node):
pass
def visit_warning(self, node):
- pass
+ raise nodes.SkipNode # Not implemented yet
def depart_note(self, node):
pass
def visit_footnote(self, node):
- pass
+ raise nodes.SkipNode # Not implemented yet
def depart_footnote(self, node):
pass
def visit_comment(self, node):
- raise nodes.SkipNode
+ raise nodes.SkipNode # Not implemented yet
# Attributes
@@ -205,10 +198,10 @@
node.parent['title'] = text
def visit_label(self, node):
- raise nodes.SkipNode
+ raise nodes.SkipNode # Not implemented yet
def visit_substitution_definition(self, node):
- raise nodes.SkipNode
+ raise nodes.SkipNode # Not implemented yet
# Plain text
@@ -269,7 +262,7 @@
if self.in_toctree:
self._decorate_list(node['list_item'], node.parent.collect_text)
else:
- self._decorate_list(node['list_item'], node.parent.collect_chunk,
+ self._decorate_list(node['list_item'], node.parent.collect_text,
'@item\n%s',
# FIXME: Should respect the 'bullet' attribute
'@itemize @bullet\n', '@end itemize\n')
@@ -278,65 +271,67 @@
set_item_list_collector(node, 'list_item')
def depart_enumerated_list(self, node):
- self._decorate_list(node['list_item'], node.parent.collect_chunk,
+ self._decorate_list(node['list_item'], node.parent.collect_text,
'@item\n%s',
'@enumerate\n', '@end enumerate\n')
def visit_definition_list(self, node):
- pass
+ raise nodes.SkipNode # Not implemented yet
def depart_definition_list(self, node):
- pass
+ raise nodes.SkipNode # Not implemented yet
def visit_definition_list_item(self, node):
- pass
+ raise nodes.SkipNode # Not implemented yet
def depart_definition_list_item(self, node):
pass
def visit_term(self, node):
- pass
+ raise nodes.SkipNode # Not implemented yet
def depart_term(self, node):
pass
def visit_definition(self, node):
- pass
+ raise nodes.SkipNode # Not implemented yet
def depart_definition(self, node):
pass
def visit_field_list(self, node):
- pass
+ raise nodes.SkipNode # Not implemented yet
+
def depart_field_list(self, node):
pass
def visit_field(self, node):
- pass
+ raise nodes.SkipNode # Not implemented yet
+
def depart_field(self, node):
pass
def visit_field_name(self, node):
- pass
+ raise nodes.SkipNode # Not implemented yet
def depart_field_name(self, node):
pass
def visit_field_body(self, node):
- pass
+ raise nodes.SkipNode # Not implemented yet
def depart_field_body(self, node):
pass
def visit_list_item(self, node):
- set_item_list_collector(node, 'chunk')
+ set_item_list_collector(node, 'text')
def depart_list_item(self, node):
- text = ''.join(node['chunk'])
+ text = ''.join(node['text'])
node.parent.collect_list_item(text)
def visit_option_list(self, node):
- pass
+ raise nodes.SkipNode # Not implemented yet
def depart_option_list(self, node):
pass
@@ -380,7 +375,7 @@
set_item_collector(node, 'table')
def depart_table(self, node):
- node.parent.collect_chunk(node['table'])
+ node.parent.collect_text(node['table'])
def visit_tgroup(self, node):
set_item_list_collector(node, 'colspec')
@@ -394,8 +389,12 @@
'{%s}', '@multitable ', '\n')
# The '@headitem xxx @tab yyy...' line
head_entries = node['head_entries']
- self._decorate_list(head_entries[1:], header.append,
- ' @tab %s', '@headitem %s' % head_entries[0], '\n')
+ if head_entries is not None:
+ # Not all tables define titles for the columns... rest parser bug ?
+ # FIXME: need a test
+ self._decorate_list(head_entries[1:], header.append,
+ ' @tab %s',
+ '@headitem %s' % head_entries[0], '\n')
header = ''.join(header)
# The '@item xxx\n @tab yyy\n ...' lines
body_rows = node['body_rows']
@@ -431,12 +430,12 @@
node.parent.collect_row(node['entry'])
def visit_entry(self, node):
- set_item_list_collector(node, 'chunk')
+ set_item_list_collector(node, 'text')
node['par_sep_orig'] = self.paragraph_sep
self.paragraph_sep = ''
def depart_entry(self, node):
- node.parent.collect_entry(''.join(node['chunk']))
+ node.parent.collect_entry(''.join(node['text']))
self.paragraph_sep = node['par_sep_orig']
# References
@@ -449,32 +448,34 @@
set_item_collector(node, 'text')
def depart_reference(self, node):
- node.parent.collect_reference((node.get('anchorname', ''),
- node.get('refuri', ''),
- ''.join(node['text']),
- ))
+ collect = getattr(node.parent, 'collect_reference', None)
+ if collect is not None:
+ # FIXME: this handle only the toctree references so far.
+ collect((node.get('anchorname', ''),
+ node.get('refuri', ''),
+ ''.join(node['text']),
+ ))
def visit_footnote_reference(self, node):
- raise nodes.SkipNode
+ raise nodes.SkipNode # Not implemented yet
def visit_citation_reference(self, node):
- raise nodes.SkipNode
+ raise nodes.SkipNode # Not implemented yet
def visit_title_reference(self, node):
- pass
+ raise nodes.SkipNode # Not implemented yet
def depart_title_reference(self, node):
pass
def visit_target(self, node):
- pass
+ raise nodes.SkipNode # Not implemented yet
def depart_target(self, node):
pass
def visit_image(self, node):
- self.add_text(_('[image]'))
- raise nodes.SkipNode
+ raise nodes.SkipNode # Not implemented yet
# Helpers to collect data in parent node
=== modified file 'doc/en/user-guide/index-plain.txt'
--- a/doc/en/user-guide/index-plain.txt 2009-12-02 20:34:07 +0000
+++ b/doc/en/user-guide/index-plain.txt 2010-05-08 08:19:38 +0000
@@ -115,5 +115,3 @@
.. include:: http_smart_server.txt
.. include:: writing_a_plugin.txt
-.. |--| unicode:: U+2014
-
More information about the bazaar-commits
mailing list