Version 1.3.1dev.
[librarian.git] / librarian / wl_light.py
diff --git a/librarian/wl_light.py b/librarian/wl_light.py
new file mode 100644 (file)
index 0000000..a39e8e0
--- /dev/null
@@ -0,0 +1,47 @@
+# -*- encoding: utf-8 -*-
+
+__author__= "Ɓukasz Rekucki"
+__date__ = "$2009-10-19 16:31:14$"
+__doc__ = "Functions to operate on a tag-light version of WLML."
+
+class LightSerializer(object):
+
+    def __init__(self):
+        pass
+
+    def serialize(self, element):
+        handler = getattr(self, 'serialize_' + element.tag, self.identity)
+        return handler(element) + (element.tail or u'')
+
+    def serialize_slowo_obce(self, e):
+        return u' %%'+self.descent(e)+u'%% '
+
+    def descent(self, e):
+        b = (e.text or u'')
+        for child in e.iterchildren():
+            b += self.serialize(child)
+        return b
+
+    def identity(self, e):
+        b = u'<'+e.tag
+        
+        # attributes
+        b += u' '.join((u'%s="%s"' % (attr, value) for attr,value in e.items()))
+        b += u'>'
+        b += self.descent(e)       
+        b += u'</' + e.tag + u'>'
+
+        return b
+
+_serializer = LightSerializer()
+
+def serialize_nl(element):
+    prolog = u'' + element.text # ordinary stuff
+    data = u''
+
+    for child in element.iterchildren():
+        data += _serializer.serialize(child)
+
+    return prolog + data
+        
+