comparison markup/plugin.py @ 192:cda3bdfc19ed

Expression evaluation now differentiates between undefined variables and variables that are defined but set to `None`.
author cmlenz
date Wed, 23 Aug 2006 17:49:14 +0000
parents 35e768b0a58b
children 547511535aaa
comparison
equal deleted inserted replaced
191:929ef2913b87 192:cda3bdfc19ed
17 """ 17 """
18 18
19 from pkg_resources import resource_filename 19 from pkg_resources import resource_filename
20 20
21 from markup.core import Attrs, Stream, QName 21 from markup.core import Attrs, Stream, QName
22 from markup.eval import Undefined
23 from markup.input import HTML, XML
22 from markup.template import Context, Template, TemplateLoader 24 from markup.template import Context, Template, TemplateLoader
23 25
24 def et_to_stream(element): 26 def ET(element):
25 """Converts the given ElementTree element to a markup stream.""" 27 """Converts the given ElementTree element to a markup stream."""
26 tag_name = element.tag 28 tag_name = element.tag
27 if tag_name.startswith('{'): 29 if tag_name.startswith('{'):
28 tag_name = tag_name[1:] 30 tag_name = tag_name[1:]
29 tag_name = QName(tag_name) 31 tag_name = QName(tag_name)
69 def transform(self, info, template): 71 def transform(self, info, template):
70 """Render the output to an event stream.""" 72 """Render the output to an event stream."""
71 if not isinstance(template, Template): 73 if not isinstance(template, Template):
72 template = self.load_template(template) 74 template = self.load_template(template)
73 75
74 data = {'ET': et_to_stream} 76 data = {'ET': ET, 'HTML': HTML, 'XML': XML}
75 if self.get_extra_vars: 77 if self.get_extra_vars:
76 data.update(self.get_extra_vars()) 78 data.update(self.get_extra_vars())
77 data.update(info) 79 data.update(info)
80 ctxt = Context(**data)
78 81
79 return template.generate(**data) 82 # Some functions for Kid compatibility
83 def defined(name):
84 return ctxt.get(name, Undefined) is not Undefined
85 ctxt['defined'] = defined
86 def value_of(name, default=None):
87 val = ctxt.get(name, Undefined)
88 if val is not Undefined:
89 return val
90 return default
91 ctxt['value_of'] = value_of
92
93 return template.generate(ctxt)
Copyright (C) 2012-2017 Edgewall Software