diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-11-18 00:55:14 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-11-18 00:55:14 +0000 |
commit | 7eac34bd827a82074cd45b285da8c9ca13d0d8b5 (patch) | |
tree | f617d36be2720397385b2df477df937e06a2a68e /lib/mako/parsetree.py | |
parent | 6bacfd878a539655beea0ef354202cc9b0837337 (diff) | |
download | external_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.py | 22 |
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 |