Mercurial > genshi > genshi-test
changeset 290:a6738047c85e
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 | dcd0e8918098 |
children | bfec5a5dffbf |
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."""