comparison markup/plugin.py @ 161:7b1f07496bf7 trunk

Various docstring additions and other cosmetic changes.
author cmlenz
date Wed, 16 Aug 2006 22:32:31 +0000
parents fb71efbd6ad4
children 2f30ce3fb85e
comparison
equal deleted inserted replaced
160:d19e8a2c549e 161:7b1f07496bf7
16 CherryPy/Buffet. 16 CherryPy/Buffet.
17 """ 17 """
18 18
19 from pkg_resources import resource_filename 19 from pkg_resources import resource_filename
20 20
21 from markup import Stream, QName 21 from markup.core import Attributes, Stream, QName
22 from markup.template import Context, Template, TemplateLoader 22 from markup.template import Context, Template, TemplateLoader
23 23
24 def ET(element): 24 def et_to_stream(element):
25 """Converts the given ElementTree element to a markup stream."""
25 tag_name = element.tag 26 tag_name = element.tag
26 if tag_name.startswith('{'): 27 if tag_name.startswith('{'):
27 tag_name = tag_name[1:] 28 tag_name = tag_name[1:]
28 tag_name = QName(tag_name) 29 tag_name = QName(tag_name)
30 attrib = Attributes(element.items())
29 31
30 yield (Stream.START, (tag_name, element.items()), (None, -1, -1)) 32 yield (Stream.START, (tag_name, attrib), (None, -1, -1))
31 if element.text: 33 if element.text:
32 yield Stream.TEXT, element.text, (None, -1, -1) 34 yield Stream.TEXT, element.text, (None, -1, -1)
33 for child in element.getchildren(): 35 for child in element.getchildren():
34 for item in ET(child): 36 for item in et_to_stream(child):
35 yield item 37 yield item
36 yield Stream.END, tag_name, (None, -1, -1) 38 yield Stream.END, tag_name, (None, -1, -1)
37 if element.tail: 39 if element.tail:
38 yield Stream.TEXT, element.tail, (None, -1, -1) 40 yield Stream.TEXT, element.tail, (None, -1, -1)
39 41
67 def transform(self, info, template): 69 def transform(self, info, template):
68 """Render the output to an event stream.""" 70 """Render the output to an event stream."""
69 if not isinstance(template, Template): 71 if not isinstance(template, Template):
70 template = self.load_template(template) 72 template = self.load_template(template)
71 73
72 data = {'ET': ET} 74 data = {'ET': et_to_stream}
73 if self.get_extra_vars: 75 if self.get_extra_vars:
74 data.update(self.get_extra_vars()) 76 data.update(self.get_extra_vars())
75 data.update(info) 77 data.update(info)
76 78
77 return template.generate(**data) 79 return template.generate(**data)
Copyright (C) 2012-2017 Edgewall Software