import xml.dom.minidom
class node(object):
- def __str__(self):
- doc = xml.dom.minidom.Document()
- return self.__todom__(doc).toxml()
+ pass
class text(node, unicode):
def __todom__(self, doc):
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):
el.appendChild(child.__todom__(doc))
return el
+ def __str__(self):
+ doc = xml.dom.minidom.Document()
+ return self.__todom__(doc).toxml()
+
class context(object):
def __init__(self):
self.nodeconv = {}
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
doc.appendChild(self.__todom__(doc))
return doc
+class xhtmlcontext(_cons.context):
+ attrmap = {u"klass": u"class"}
+
+ def addattr(self, node, k, v):
+ k = unicode(k)
+ node.attrs[self.attrmap.get(k, k)] = unicode(v)
+
def cons(ctx=None):
+ if ctx is None: ctx = xhtmlcontext()
return _cons.constructor(ns, htmlelement, ctx)
def head(title=None, css=None):
from __future__ import with_statement
import os, threading
from mako import template, lookup, filters
-import util, form, session, env
+import util, form, session, env, resp
# It seems Mako isn't thread-safe.
makolock = threading.Lock()
@util.wsgiwrap
def application(req):
+ if req.method not in ["GET", "HEAD"]:
+ raise resp.httperror(405)
return handle(req, req.filename,
form = form.formdata(req),
session = session.get(req))