summaryrefslogtreecommitdiff
path: root/pystache/renderengine.py
diff options
context:
space:
mode:
authorChris Jerdonek <chris.jerdonek@gmail.com>2012-01-01 21:56:51 -0800
committerChris Jerdonek <chris.jerdonek@gmail.com>2012-01-01 21:56:51 -0800
commit1979c2bb8981ef51a1d9df5f3522146a9b43a8f7 (patch)
treeb359a7bad480b192fca9a5b56247254126dfcf20 /pystache/renderengine.py
parent27af8b1528739117cb3c767b2ecf9dc97b73da9d (diff)
downloadpystache-1979c2bb8981ef51a1d9df5f3522146a9b43a8f7.tar.gz
Moved functions to top of renderengine.py.
Diffstat (limited to 'pystache/renderengine.py')
-rw-r--r--pystache/renderengine.py110
1 files changed, 57 insertions, 53 deletions
diff --git a/pystache/renderengine.py b/pystache/renderengine.py
index 72bbd14..d34b974 100644
--- a/pystache/renderengine.py
+++ b/pystache/renderengine.py
@@ -25,6 +25,63 @@ except ImportError:
return hasattr(it, '__call__')
+# TODO: what are the possibilities for val?
+def call(val, view, template=None):
+ if callable(val):
+ (args, _, _, _) = inspect.getargspec(val)
+
+ args_count = len(args)
+
+ if not isinstance(val, types.FunctionType):
+ # Then val is an instance method. Subtract one from the
+ # argument count because Python will automatically prepend
+ # self to the argument list when calling.
+ args_count -=1
+
+ if args_count is 0:
+ val = val()
+ elif args_count is 1 and args[0] in ['self', 'context']:
+ val = val(view)
+ elif args_count is 1:
+ val = val(template)
+ else:
+ val = val(view, template)
+
+ if callable(val):
+ val = val(template)
+
+ if val is None:
+ val = ''
+
+ return unicode(val)
+
+
+def render_parse_tree(parse_tree, context, template):
+ """
+ Convert a parse-tree into a string.
+
+ """
+ get_string = lambda val: call(val, context, template)
+ parts = map(get_string, parse_tree)
+ return ''.join(parts)
+
+
+def inverseTag(name, parsed, template, delims):
+ def func(self):
+ data = self.get(name)
+ if data:
+ return ''
+ return render_parse_tree(parsed, self, delims)
+ return func
+
+
+class EndOfSection(Exception):
+ def __init__(self, parse_tree, template, position):
+ self.parse_tree = parse_tree
+ self.template = template
+ self.position = position
+
+
class RenderEngine(object):
"""
@@ -276,59 +333,6 @@ class RenderEngine(object):
return output
-# TODO: what are the possibilities for val?
-def call(val, view, template=None):
- if callable(val):
- (args, _, _, _) = inspect.getargspec(val)
-
- args_count = len(args)
-
- if not isinstance(val, types.FunctionType):
- # Then val is an instance method. Subtract one from the
- # argument count because Python will automatically prepend
- # self to the argument list when calling.
- args_count -=1
-
- if args_count is 0:
- val = val()
- elif args_count is 1 and args[0] in ['self', 'context']:
- val = val(view)
- elif args_count is 1:
- val = val(template)
- else:
- val = val(view, template)
-
- if callable(val):
- val = val(template)
-
- if val is None:
- val = ''
-
- return unicode(val)
-
-def render_parse_tree(parse_tree, context, template):
- """
- Convert a parse-tree into a string.
-
- """
- get_string = lambda val: call(val, context, template)
- parts = map(get_string, parse_tree)
- return ''.join(parts)
-
-def inverseTag(name, parsed, template, delims):
- def func(self):
- data = self.get(name)
- if data:
- return ''
- return render_parse_tree(parsed, self, delims)
- return func
-
-class EndOfSection(Exception):
- def __init__(self, parse_tree, template, position):
- self.parse_tree = parse_tree
- self.template = template
- self.position = position
-
class Template(object):
tag_re = None
otag, ctag = '{{', '}}'