/[opental]/opental/pax/paxtransform.py
ViewVC logotype

Diff of /opental/pax/paxtransform.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.33 by lalo, Mon Apr 14 22:13:02 2003 UTC revision 1.34 by lalo, Fri Apr 25 16:04:04 2003 UTC
# Line 41  class Engine(object): Line 41  class Engine(object):
41              result = element.copy()              result = element.copy()
42          except AttributeError:          except AttributeError:
43              return element              return element
44          __traceback_info__ = getattr(element, 'raw', repr(element))          __traceback_info__ = getattr(element, 'raw', repr(element))[:30] + '...'
45          processed = []          processed = []
46          error_handler = getattr(element, 'transform_error_handler', None)          error_handler = getattr(element, 'transform_error_handler', None)
47          if error_handler:          if error_handler:
# Line 55  class Engine(object): Line 55  class Engine(object):
55              result = pack_list(result)              result = pack_list(result)
56          except:          except:
57              # usually we're not interested in errors from pack              # usually we're not interested in errors from pack
             traceback.print_exc()  
58              pass              pass
59          context.postprocess_remaining = processed          context.postprocess_remaining = processed
60          try:          try:
# Line 118  class Engine(object): Line 117  class Engine(object):
117    
118  class RenderingEngine(Engine):  class RenderingEngine(Engine):
119      "Transforms something, and renders it to XML"      "Transforms something, and renders it to XML"
120        def _seq_to_unicode(self, seq, encoding):
121            seq = list(seq)
122            for i, e in enumerate(seq):
123                if type(e) in (types.StringType, types.UnicodeType):
124                    continue
125                if e is None:
126                    seq[i] = u''
127                    continue
128                try:
129                    seq[i] = unicode(e)
130                except:
131                    seq[i] = unicode(str(e), encoding)
132            return ''.join(seq)
133    
134      def transform(self, element, context):      def transform(self, element, context):
135          result = Engine.transform(self, element, context)          result = Engine.transform(self, element, context)
136          if hasattr(result, 'children'):          if hasattr(result, '__xml__'):
137              return XML(result, context.root_xmlns_map, context.encoding)              return XML(result, context.root_xmlns_map, context.encoding)
138          elif type(result) in (types.ListType, types.TupleType):          elif type(result) in (types.ListType, types.TupleType):
139              return ''.join([str(child) for child in result])              return self._seq_to_unicode(result, context.encoding)
140          return result          return result
141    
142      def transform_children(self,element,context):      def transform_children(self,element,context):
143          element = Engine.transform_children(self, element, context)          element = Engine.transform_children(self, element, context)
144          # except that the children will be strings          # except that the children will be strings
145          if hasattr(element, 'children'):          if hasattr(element, 'children'):
146              element.children = (Literal(''.join([str(child) for child in element if child])),)              element.children = (Literal(self._seq_to_unicode(element, context.encoding)),)
147          return element          return element
148    
149    

Legend:
Removed from v.1.33  
changed lines
  Added in v.1.34

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26