changeset 101:5df0d81ac5d6 trunk

Ported [115] to trunk.
author cmlenz
date Mon, 24 Jul 2006 18:57:33 +0000
parents a519f581a1b1
children e20a153cc20c
files markup/eval.py markup/template.py
diffstat 2 files changed, 23 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/markup/eval.py
+++ b/markup/eval.py
@@ -103,23 +103,25 @@
 
         return gen.getCode()
 
-    def _lookup_name(self, data, name, locals=None):
+    def _lookup_name(data, name, locals=None):
         val = data.get(name)
         if val is None and locals:
             val = locals.get(name)
         if val is None:
             val = getattr(__builtin__, name, None)
         return val
+    _lookup_name = staticmethod(_lookup_name)
 
-    def _lookup_attribute(self, data, obj, key):
+    def _lookup_attribute(data, obj, key):
         if hasattr(obj, key):
             return getattr(obj, key)
         try:
             return obj[key]
         except (KeyError, TypeError):
             return None
+    _lookup_attribute = staticmethod(_lookup_attribute)
 
-    def _lookup_item(self, data, obj, key):
+    def _lookup_item(data, obj, key):
         if len(key) == 1:
             key = key[0]
         try:
@@ -131,6 +133,7 @@
                     return getattr(obj, key)
                 except (AttributeError, TypeError), e:
                     pass
+    _lookup_item = staticmethod(_lookup_item)
 
 
 class ASTTransformer(object):
--- a/markup/template.py
+++ b/markup/template.py
@@ -243,7 +243,7 @@
     def __call__(self, stream, ctxt, directives):
         def _generate():
             kind, data, pos = stream.next()
-            if kind is Stream.START:
+            if kind is START:
                 yield kind, data, pos # emit start tag
             yield EXPR, self.expr, pos
             previous = stream.next()
@@ -363,20 +363,22 @@
 
     def __call__(self, stream, ctxt, directives):
         iterable = self.expr.evaluate(ctxt)
-        if iterable is not None:
-            scope = {}
-            stream = list(stream)
-            targets = self.targets
-            for item in iter(iterable):
-                if len(targets) == 1:
-                    scope[targets[0]] = item
-                else:
-                    for idx, name in enumerate(targets):
-                        scope[name] = item[idx]
-                ctxt.push(scope)
-                for event in _apply_directives(stream, ctxt, directives):
-                    yield event
-                ctxt.pop()
+        if iterable is None:
+            return
+
+        scope = {}
+        stream = list(stream)
+        targets = self.targets
+        for item in iter(iterable):
+            if len(targets) == 1:
+                scope[targets[0]] = item
+            else:
+                for idx, name in enumerate(targets):
+                    scope[name] = item[idx]
+            ctxt.push(scope)
+            for event in _apply_directives(stream, ctxt, directives):
+                yield event
+            ctxt.pop()
 
     def __repr__(self):
         return '<%s "%s in %s">' % (self.__class__.__name__,
Copyright (C) 2012-2017 Edgewall Software