Merge branch 'master' into python2
authorFredrik Tolf <fredrik@dolda2000.com>
Sun, 19 Mar 2017 20:00:54 +0000 (21:00 +0100)
committerFredrik Tolf <fredrik@dolda2000.com>
Sun, 19 Mar 2017 20:00:54 +0000 (21:00 +0100)
Conflicts:
wrw/proto.py

wrw/proto.py
wrw/sp/cons.py

index a67fa19..36a9db9 100644 (file)
@@ -105,7 +105,7 @@ def urlq(url):
     if isinstance(url, unicode):
         url = url.encode("utf-8")
     ret = ""
-    invalid = ";&=#?/\"'"
+    invalid = "%;&=#?/\"'"
     for c in url:
         if c in invalid or (ord(c) <= 32) or (ord(c) >= 128):
             ret += "%%%02X" % ord(c)
index bc9bfa2..1cc93ea 100644 (file)
@@ -1,4 +1,4 @@
-import sys
+import sys, collections
 import xml.dom.minidom
 
 class node(object):
@@ -57,12 +57,19 @@ class context(object):
             return ob.__tonode__()
         if type(ob) in self.nodeconv:
             return self.nodeconv[type(ob)](ob)
-        raise Exception("No node conversion known for %s objects" % str(type(ob)))
+        return None
 
     def addchild(self, node, child):
         if child is None:
             return
-        node.children.append(self.nodefrom(child))
+        new = self.nodefrom(child)
+        if new is not None:
+            node.children.append(new)
+        elif isinstance(child, collections.Iterable):
+            for ch in child:
+                self.addchild(node, ch)
+        else:
+            raise Exception("No node conversion known for %s objects" % str(type(child)))
 
     def addattr(self, node, k, v):
         if v is not None: