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