[Lxml-checkins] r44070 - lxml/trunk/src/lxml

scoder at codespeak.net scoder at codespeak.net
Thu Jun 7 09:42:25 CEST 2007


Author: scoder
Date: Thu Jun  7 09:42:24 2007
New Revision: 44070

Modified:
   lxml/trunk/src/lxml/builder.py
Log:
E factory cleanup for lxml.etree, 'parser' keyword argument

Modified: lxml/trunk/src/lxml/builder.py
==============================================================================
--- lxml/trunk/src/lxml/builder.py	(original)
+++ lxml/trunk/src/lxml/builder.py	Thu Jun  7 09:42:24 2007
@@ -16,9 +16,6 @@
         return lambda *args, **kwargs: func(tag, *args, **kwargs)
 
 
-class _C:
-    pass
-
 class ElementMaker(object):
     """Element generator factory.
 
@@ -97,7 +94,12 @@
         </html>
     """
 
-    def __init__(self, typemap=None):
+    def __init__(self, typemap=None, parser=None):
+        if parser is not None:
+            self._makeelement = parser.makeelement
+        else:
+            self._makeelement = ET.Element
+
 	# initialize type map for this element factory
 
 	if typemap:
@@ -121,20 +123,12 @@
 		    attrib[k] = typemap[type(v)](None, v)
 	typemap[dict] = add_dict
 
-	def add_elem(elem, item):
-	    elem.append(item)
-	t = type(ET.Element("tag"))
-	if t is not type(_C()):
-	    typemap[t] = add_elem
-
 	self._typemap = typemap
 
-	# print typemap
-
     def __call__(self, tag, *children, **attrib):
 	get = self._typemap.get
 
-        elem = ET.Element(tag)
+        elem = self._makeelement(tag)
 	if attrib:
 	    get(dict)(elem, attrib)
 


More information about the lxml-checkins mailing list