serializer.py

Go to the documentation of this file.
00001 from silme.core.entity import EntityList, Entity
00002 from silme.core.object import Comment
00003 
00004 import re
00005 
00006 class GettextSerializer:
00007     @classmethod
00008     def serialize(cls, l10nobject, fallback=None):
00009         if not fallback:
00010             fallback = l10nobject.fallback
00011         string = u''.join([cls.dump_element(element, fallback) for element in l10nobject])
00012         return string
00013 
00014     @classmethod
00015     def dump_element (cls, element, fallback=None):
00016         if isinstance(element, Entity):
00017             return cls.dump_entity(element, fallback=fallback)
00018         elif isinstance(element,Comment):
00019             return cls.dump_comment(element)
00020         else:
00021             return element
00022 
00023     @classmethod
00024     def dump_entity (cls, entity, fallback=None):
00025         string = u'msgid '+entity.id+u'\nmsgstr "'+entity.get_value(fallback)+u'"\n'
00026         return string
00027 
00028     @classmethod
00029     def dump_entitylist(cls, elist, fallback=None):
00030         if not fallback:
00031             fallback = elist.fallback
00032         string = u''.join([cls.dump_entity(entity, fallback)+'\n' for entity in elist.get_entities()])
00033         return string
00034 
00035     @classmethod
00036     def dump_comment (cls, comment):
00037         string = u''
00038         for element in comment:
00039             string += cls.dump_element(element)
00040         if string:
00041             pattern = re.compile('\n')
00042             string = pattern.sub('\n#', string)
00043             string = '#' + string
00044             if string.endswith('#'):
00045                 string = string[:-1]
00046         return string

Generated on Tue May 12 17:37:27 2009 for silme by  doxygen 1.5.8