[Lxml-checkins] r46158 - in lxml/trunk: . src/lxml

scoder at codespeak.net scoder at codespeak.net
Wed Aug 29 14:29:42 CEST 2007


Author: scoder
Date: Wed Aug 29 14:29:41 2007
New Revision: 46158

Modified:
   lxml/trunk/CHANGES.txt
   lxml/trunk/src/lxml/builder.py
Log:
let ElementMaker accept 'namespace' and 'nsmap' keywords as in objectify

Modified: lxml/trunk/CHANGES.txt
==============================================================================
--- lxml/trunk/CHANGES.txt	(original)
+++ lxml/trunk/CHANGES.txt	Wed Aug 29 14:29:41 2007
@@ -87,6 +87,10 @@
 Features added
 --------------
 
+* The ``ElementMaker`` in ``lxml.builder`` now accepts the keyword arguments
+  ``namespace`` and ``nsmap`` to set a namespace and nsmap for the Elements it
+  creates.
+
 * The ``docinfo`` on ElementTree objects has new properties ``internalDTD``
   and ``externalDTD`` that return a DTD object for the internal or external
   subset of the document respectively.

Modified: lxml/trunk/src/lxml/builder.py
==============================================================================
--- lxml/trunk/src/lxml/builder.py	(original)
+++ lxml/trunk/src/lxml/builder.py	Wed Aug 29 14:29:41 2007
@@ -121,7 +121,18 @@
         </html>
     """
 
-    def __init__(self, typemap=None, makeelement=None):
+    def __init__(self, typemap=None,
+                 namespace=None, nsmap=None, makeelement=None):
+        if namespace is not None:
+            self._namespace = '{' + namespace + '}'
+        else:
+            self._namespace = None
+
+        if nsmap:
+            self._nsmap = dict(nsmap)
+        else:
+            self._nsmap = None
+
         if makeelement is not None:
             assert callable(makeelement)
             self._makeelement = makeelement
@@ -160,7 +171,9 @@
     def __call__(self, tag, *children, **attrib):
 	get = self._typemap.get
 
-        elem = self._makeelement(tag)
+        if self._namespace is not None and tag[0] != '{':
+            tag = self._namespace + tag
+        elem = self._makeelement(tag, nsmap=self._nsmap)
 	if attrib:
 	    get(dict)(elem, attrib)
 


More information about the lxml-checkins mailing list