def __call__(self, *children, **attrs):
for child in children:
- self.children.append(self.ctx.nodefrom(child))
+ self.ctx.addchild(self, child)
for k, v in attrs.iteritems():
- self.attrs[unicode(k)] = unicode(v)
+ self.ctx.addattr(self, k, v)
return self
def __todom__(self, doc):
return self.nodeconv[type(ob)](ob)
raise Exception("No node conversion known for %s objects" % str(type(ob)))
+ def addchild(self, node, child):
+ node.children.append(self.nodefrom(child))
+
+ def addattr(self, node, k, v):
+ node.attrs[unicode(k)] = unicode(v)
+
class constructor(object):
def __init__(self, ns, elcls = element, ctx=None):
self._ns = ns