diff markup/plugin.py @ 192:b64e36bc1100 trunk

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 1f6ca5028770
children eb0ba1060564
line wrap: on
line diff
--- a/markup/plugin.py
+++ b/markup/plugin.py
@@ -19,9 +19,11 @@
 from pkg_resources import resource_filename
 
 from markup.core import Attrs, Stream, QName
+from markup.eval import Undefined
+from markup.input import HTML, XML
 from markup.template import Context, Template, TemplateLoader
 
-def et_to_stream(element):
+def ET(element):
     """Converts the given ElementTree element to a markup stream."""
     tag_name = element.tag
     if tag_name.startswith('{'):
@@ -71,9 +73,21 @@
         if not isinstance(template, Template):
             template = self.load_template(template)
 
-        data = {'ET': et_to_stream}
+        data = {'ET': ET, 'HTML': HTML, 'XML': XML}
         if self.get_extra_vars:
             data.update(self.get_extra_vars())
         data.update(info)
+        ctxt = Context(**data)
 
-        return template.generate(**data)
+        # Some functions for Kid compatibility
+        def defined(name):
+            return ctxt.get(name, Undefined) is not Undefined
+        ctxt['defined'] = defined
+        def value_of(name, default=None):
+            val = ctxt.get(name, Undefined)
+            if val is not Undefined:
+                return val
+            return default
+        ctxt['value_of'] = value_of
+
+        return template.generate(ctxt)
Copyright (C) 2012-2017 Edgewall Software