Fixed sp formatter bug.
[wrw.git] / wrw / sp / util.py
index f387f1c..50fbd90 100644 (file)
@@ -44,6 +44,9 @@ class formatter(object):
     def text(self, el):
         self.quotewrite(el)
 
+    def rawcode(self, el):
+        self.write(el)
+
     def attrval(self, buf):
         qc, qt = (u"'", u"'") if u'"' in buf else (u'"', u""")
         self.write(qc)
@@ -95,7 +98,7 @@ class formatter(object):
     def endtag(self, el):
         self.write(u'</' + self.elname(el) + u'>')
 
-    def longtag(self, el):
+    def longtag(self, el, **extra):
         self.starttag(el, **extra)
         for ch in el.children:
             self.node(ch)
@@ -112,6 +115,8 @@ class formatter(object):
             self.element(el)
         elif isinstance(el, cons.text):
             self.text(el)
+        elif isinstance(el, cons.raw):
+            self.rawcode(el)
         else:
             raise Exception("Unknown object in element tree: " + el)
 
@@ -135,6 +140,10 @@ class formatter(object):
     def output(cls, out, el, *args, **kw):
         cls(out=out, root=el, *args, **kw).start()
 
+    @classmethod
+    def fragment(cls, out, el, *args, **kw):
+        cls(out=out, root=el, *args, **kw).node(el)
+
     def update(self, **ch):
         ret = type(self).__new__(type(self))
         ret.__dict__.update(self.__dict__)