changeset 290:94f9f2cc66c8 trunk

Move the ElementTree ''element-to-stream'' adaptation function `ET()` into the `genshi.input` module.
author cmlenz
date Fri, 13 Oct 2006 08:16:43 +0000
parents e09c5b7a64ae
children b6684c946a53
files genshi/input.py genshi/plugin.py
diffstat 2 files changed, 17 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/genshi/input.py
+++ b/genshi/input.py
@@ -25,7 +25,22 @@
 from genshi.core import DOCTYPE, START, END, START_NS, END_NS, TEXT, \
                         START_CDATA, END_CDATA, PI, COMMENT
 
-__all__ = ['ParseError', 'XMLParser', 'XML', 'HTMLParser', 'HTML']
+__all__ = ['ET', 'ParseError', 'XMLParser', 'XML', 'HTMLParser', 'HTML']
+
+def ET(element):
+    """Convert a given ElementTree element to a markup stream."""
+    tag_name = QName(element.tag.lstrip('{'))
+    attrs = Attrs(element.items())
+
+    yield START, (tag_name, attrs), (None, -1, -1)
+    if element.text:
+        yield TEXT, element.text, (None, -1, -1)
+    for child in element.getchildren():
+        for item in ET(child):
+            yield item
+    yield END, tag_name, (None, -1, -1)
+    if element.tail:
+        yield TEXT, element.tail, (None, -1, -1)
 
 
 class ParseError(Exception):
--- a/genshi/plugin.py
+++ b/genshi/plugin.py
@@ -18,30 +18,11 @@
 
 from pkg_resources import resource_filename
 
-from genshi.core import Attrs, Stream, QName
 from genshi.eval import Undefined
-from genshi.input import HTML, XML
+from genshi.input import ET, HTML, XML
 from genshi.template import Context, MarkupTemplate, Template, TemplateLoader, \
                             TextTemplate
 
-def ET(element):
-    """Converts the given ElementTree element to a markup stream."""
-    tag_name = element.tag
-    if tag_name.startswith('{'):
-        tag_name = tag_name[1:]
-    tag_name = QName(tag_name)
-    attrib = Attrs(element.items())
-
-    yield (Stream.START, (tag_name, attrib), (None, -1, -1))
-    if element.text:
-        yield Stream.TEXT, element.text, (None, -1, -1)
-    for child in element.getchildren():
-        for item in ET(child):
-            yield item
-    yield Stream.END, tag_name, (None, -1, -1)
-    if element.tail:
-        yield Stream.TEXT, element.tail, (None, -1, -1)
-
 
 class AbstractTemplateEnginePlugin(object):
     """Implementation of the plugin API."""
Copyright (C) 2012-2017 Edgewall Software