Version 1.3.1dev.
[librarian.git] / librarian / wl_light.py
1 # -*- encoding: utf-8 -*-
2
3 __author__= "Ɓukasz Rekucki"
4 __date__ = "$2009-10-19 16:31:14$"
5 __doc__ = "Functions to operate on a tag-light version of WLML."
6
7 class LightSerializer(object):
8
9     def __init__(self):
10         pass
11
12     def serialize(self, element):
13         handler = getattr(self, 'serialize_' + element.tag, self.identity)
14         return handler(element) + (element.tail or u'')
15
16     def serialize_slowo_obce(self, e):
17         return u' %%'+self.descent(e)+u'%% '
18
19     def descent(self, e):
20         b = (e.text or u'')
21         for child in e.iterchildren():
22             b += self.serialize(child)
23         return b
24
25     def identity(self, e):
26         b = u'<'+e.tag
27         
28         # attributes
29         b += u' '.join((u'%s="%s"' % (attr, value) for attr,value in e.items()))
30         b += u'>'
31         b += self.descent(e)       
32         b += u'</' + e.tag + u'>'
33
34         return b
35
36 _serializer = LightSerializer()
37
38 def serialize_nl(element):
39     prolog = u'' + element.text # ordinary stuff
40     data = u''
41
42     for child in element.iterchildren():
43         data += _serializer.serialize(child)
44
45     return prolog + data
46         
47