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():
+ for k, v in attrs.items():
- self.attrs[str(k)] = str(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)))
- node.attrs[unicode(k)] = unicode(v)
+ def addchild(self, node, child):
+ node.children.append(self.nodefrom(child))
+
+ def addattr(self, node, k, v):
++ node.attrs[str(k)] = str(v)
+
class constructor(object):
def __init__(self, ns, elcls = element, ctx=None):
self._ns = ns
doc.appendChild(self.__todom__(doc))
return doc
- attrmap = {u"klass": u"class"}
+ class xhtmlcontext(_cons.context):
- k = unicode(k)
- node.attrs[self.attrmap.get(k, k)] = unicode(v)
++ attrmap = {"klass": "class"}
+
+ def addattr(self, node, k, v):
++ k = str(k)
++ node.attrs[self.attrmap.get(k, k)] = str(v)
+
def cons(ctx=None):
+ if ctx is None: ctx = xhtmlcontext()
return _cons.constructor(ns, htmlelement, ctx)
def head(title=None, css=None):