]> git.sesse.net Git - xml-template/commitdiff
Start implementing cloning in Python.
authorsgunderson@bigfoot.com <>
Wed, 6 Sep 2006 15:34:24 +0000 (17:34 +0200)
committersgunderson@bigfoot.com <>
Wed, 6 Sep 2006 15:34:24 +0000 (17:34 +0200)
python/xmltemplate.py

index 83a9e0efe0cd522f318911b1c01f5a6fcf05ba79..4c1aa0d669a124198723041af8adf755ee33380e 100644 (file)
@@ -46,12 +46,38 @@ def process(node, obj, clean = True):
 
                        if not processed:
                                process(child, obj, clean)
+       elif isinstance(obj, list):                     # repeat
+               doc = _get_document_element(node)
+               frag = doc.createElement("temporary-fragment")     # ugh
+
+               for child in node.childNodes:
+                       frag.appendChild(child)
+                       node.removeChild(child)
 
+               for instance in obj:
+                       newnode = frag.clone(True)
+                       node.appendChild(newnode)
+                       process(newnode, instance, clean)
+                       if clean:
+                               _clean(newnode)
 
+               # remove all the <fragment> tags
+
+               for child in node.childNodes:
+                       if child.name == 'temporary-fragment':
+                               for child2 in child.childNodes:
+                                       node.appendChild(child2)
+                               node.removeChild(child)
+
+       if clean:
+               _clean(node)
 
 def alternate(tag, array, *elems):
        return array
 
+def _clean(node):
+       pass
+
 # ugh
 def _get_document_element(node):
        if node.parentNode is None: