serializer.py

Go to the documentation of this file.
00001 from silme.core.entity import EntityList, Entity
00002 from structure import *
00003 from parser import DTDParser as Parser
00004 
00005 class DTDSerializer():
00006     @classmethod
00007     def serialize(cls, l10nobject, fallback=None):
00008         if not fallback:
00009             fallback = l10nobject.fallback
00010         string = u''.join([cls.dump_element(element, fallback) for element in l10nobject])
00011         return string
00012 
00013     @classmethod
00014     def dump_element (cls, element, fallback=None):
00015         if isinstance(element, Entity):
00016             return cls.dump_entity(element, fallback=fallback)
00017         elif isinstance(element,Comment):
00018             return cls.dump_comment(element)
00019         else:
00020             return element
00021 
00022     @classmethod
00023     def dump_entity (cls, entity, fallback=None):
00024         if entity.params.has_key('source') and entity.params['source']['type']=='dtd':
00025             match = Parser.patterns['entity'].match(entity.params['source']['string'])
00026             string = entity.params['source']['string'][0:match.start(1)]
00027             string += entity.id
00028             string += entity.params['source']['string'][match.end(1):match.start(2)+1]
00029             string += entity.get_value(fallback)
00030             string += entity.params['source']['string'][match.end(2)-1:]
00031         else:
00032             string = u'<!ENTITY '+entity.id+u' "'+entity.get_value(fallback)+u'">'
00033         return string
00034 
00035     @classmethod
00036     def dump_entitylist(cls, elist, fallback=None):
00037         if not fallback:
00038             fallback = elist.fallback
00039         string = u''.join([cls.dump_entity(entity, fallback)+'\n' for entity in elist.get_entities()])
00040         return string
00041 
00042     @classmethod
00043     def dump_comment (cls, comment):
00044         string = u'<!--'
00045         for element in comment:
00046             string += cls.dump_element(element)
00047         string += u'-->'
00048         return string

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