kindy
unread,Sep 28, 2008, 4:53:49 AM9/28/08Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to Genshi
the genshi.builder.tag allow us create element easy and quickly,
but some times we need to create element in html or xhtml, so i do
this.
share to you .
{{{
from builder import Element, ElementFactory, Stream
__all__ = ['htmltag', 'xhtmltag', 'tag']
class CustomElement(Element):
def __init__(self, tag_, serializer, **attrib):
Element.__init__(self, tag_, **attrib)
self.serializer = serializer
def __repr__(self):
return '<%s "%s">' % (self.__class__.__name__, self.tag)
def insert(self, idx, node):
if isinstance(node, (Stream, Element, basestring, int, float,
long)):
self.children.insert(idx, node)
elif isinstance(node, Fragment):
self.children[idx:idx] = node.children
elif node is not None:
try:
for node_ in node:
self.insert(idx, node_)
except TypeError:
self.children.insert(idx, node)
def generate(self):
return Stream(self._generate(), serializer=self.serializer)
class CustomElementFactory(ElementFactory):
def __init__(self, serializer, namespace=None):
ElementFactory.__init__(self, namespace)
self.serializer = serializer
def __getitem__(self, namespace):
return CustomElementFactory(self.serializer, namespace)
def __getattr__(self, name):
return CustomElement(self.namespace and self.namespace[name]
or name, self.serializer)
htmltag = CustomElementFactory('html')
xhtmltag = CustomElementFactory('xhtml')
tag = CustomElementFactory('xml')
}}}