aboutsummaryrefslogtreecommitdiffstats
path: root/lib/mako/parsetree.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2006-11-18 00:55:14 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2006-11-18 00:55:14 +0000
commit7eac34bd827a82074cd45b285da8c9ca13d0d8b5 (patch)
treef617d36be2720397385b2df477df937e06a2a68e /lib/mako/parsetree.py
parent6bacfd878a539655beea0ef354202cc9b0837337 (diff)
downloadexternal_python_mako-7eac34bd827a82074cd45b285da8c9ca13d0d8b5.tar.gz
external_python_mako-7eac34bd827a82074cd45b285da8c9ca13d0d8b5.tar.bz2
external_python_mako-7eac34bd827a82074cd45b285da8c9ca13d0d8b5.zip
adding TemplateNode as lead parsetree value
Diffstat (limited to 'lib/mako/parsetree.py')
-rw-r--r--lib/mako/parsetree.py22
1 files changed, 20 insertions, 2 deletions
diff --git a/lib/mako/parsetree.py b/lib/mako/parsetree.py
index 9a4d5e3..8d9cfdc 100644
--- a/lib/mako/parsetree.py
+++ b/lib/mako/parsetree.py
@@ -7,9 +7,23 @@ class Node(object):
def __init__(self, lineno, pos):
self.lineno = lineno
self.pos = pos
+ def get_children(self):
+ return []
def accept_visitor(self, visitor):
- method = getattr(visitor, "visit" + self.__class__.__name__)
+ def traverse(node):
+ for n in node.get_children():
+ n.accept_visitor(visitor)
+ method = getattr(visitor, "visit" + self.__class__.__name__, traverse)
method(self)
+
+class TemplateNode(Node):
+ """a 'container' node that stores the overall collection of nodes."""
+ def __init__(self):
+ super(TemplateNode, self).__init__(0, 0)
+ self.nodes = []
+ self.page_attributes = {}
+ def __repr__(self):
+ return "TemplateNode(%s, %s)" % (repr(self.page_attributes), repr(self.nodes))
class ControlLine(Node):
"""defines a control line, a line-oriented python line or end tag.
@@ -120,6 +134,8 @@ class Tag(Node):
self.keyword = keyword
self.attributes = attributes
self.nodes = []
+ def get_children(self):
+ return self.nodes
def __repr__(self):
return "%s(%s, %s, %s, %s)" % (self.__class__.__name__, repr(self.keyword), repr(self.attributes), repr((self.lineno, self.pos)), repr([repr(x) for x in self.nodes]))
@@ -132,4 +148,6 @@ class ComponentTag(Tag):
class CallTag(Tag):
__keyword__ = 'call'
class InheritTag(Tag):
- __keyword__ = 'inherit' \ No newline at end of file
+ __keyword__ = 'inherit'
+class PageTag(Tag):
+ __keyword__ = 'page' \ No newline at end of file