Move node filtering into extract_messages.

This commit is contained in:
Robert Lehmann 2011-07-06 08:52:07 +02:00
parent f1f7bde914
commit b5f53e1972
2 changed files with 11 additions and 6 deletions

View File

@ -81,10 +81,6 @@ class I18nBuilder(Builder):
catalog = self.catalogs[docname.split(SEP, 1)[0]]
for node, msg in extract_messages(doctree):
if not node.source:
continue # built-in message
if isinstance(node, nodes.literal_block):
continue
catalog.add(msg, node)

View File

@ -22,16 +22,25 @@ from sphinx.util.pycompat import class_types
explicit_title_re = re.compile(r'^(.+?)\s*(?<!\x00)<(.*?)>$', re.DOTALL)
caption_ref_re = explicit_title_re # b/w compat alias
IGNORED_NODES = (
nodes.Invisible,
nodes.Inline,
nodes.literal_block,
nodes.doctest_block,
#XXX there are probably more
)
def extract_messages(doctree):
"""Extract translatable messages from a document tree."""
for node in doctree.traverse(nodes.TextElement):
if isinstance(node, (nodes.Invisible, nodes.Inline)):
if not node.source:
continue # built-in message
if isinstance(node, IGNORED_NODES):
continue
# <field_name>orphan</field_name>
# XXX ignore all metadata (== docinfo)
if isinstance(node, nodes.field_name) and node.children[0] == 'orphan':
continue
msg = node.rawsource.replace('\n', ' ').strip()
# XXX nodes rendering empty are likely a bug in sphinx.addnodes
if msg: