svv/html.py
changeset 8 27e37082625e
parent 5 c72e0314b930
child 50 c3ae4c448248
equal deleted inserted replaced
7:bbac4b0f4320 8:27e37082625e
   261 
   261 
   262             >>> Tag('x', foo=5, bar='<').render_attrs()
   262             >>> Tag('x', foo=5, bar='<').render_attrs()
   263             u'foo="5" bar="&lt;"'
   263             u'foo="5" bar="&lt;"'
   264         """
   264         """
   265 
   265 
   266         return " ".join(self.format_attr(n, v) for n, v in self.attrs.iteritems())
   266         return " ".join(self.format_attr(n, v) for n, v in self.attrs.iteritems() if not n.startswith('_'))
   267 
   267 
   268     def render_raw_lines (self, indent=u'\t') :
   268     def render_raw_lines (self, indent=u'\t') :
   269         """
   269         """
   270             Render the tag and indented content
   270             Render the tag and indented content
   271 
   271 
   272             >>> list(Tag('xx', 'yy', zz='foo').render_raw_lines(indent=' '))
   272             >>> list(Tag('xx', 'yy', zz='foo').render_raw_lines(indent=' '))
   273             [u'<xx zz="foo">', u' yy', u'</xx>']
   273             [u'<xx zz="foo">', u' yy', u'</xx>']
   274         """
   274         """
       
   275         
       
   276         # opts
       
   277         selfclosing = self.attrs.get('_selfclosing')
       
   278         whitespace_sensitive = self.attrs.get('_whitespace_sensitive')
   275 
   279 
   276         # render attr string, including preceding space
   280         # render attr string, including preceding space
   277         attrs_stuff = (" " + self.render_attrs()) if self.attrs else ""
   281         attrs_stuff = (" " + self.render_attrs()) if self.attrs else ""
   278 
   282 
   279         if self.contents :
   283         if self.contents or selfclosing is False:
   280             # wrapping tags
   284 
   281             yield u"<%s%s>" % (self.name, attrs_stuff)
   285             if not whitespace_sensitive :
       
   286                 # wrapping tags
       
   287                 yield u"<%s%s>" % (self.name, attrs_stuff)
       
   288                 
       
   289                 # subcontents
       
   290                 for line in super(Tag, self).render_raw_lines(indent=indent) :
       
   291                     yield indent + line
       
   292 
       
   293                 yield u"</%s>" % (self.name, )
   282             
   294             
   283             # subcontents
   295             else :
   284             for line in super(Tag, self).render_raw_lines(indent=indent) :
   296                 # whole tag
   285                 yield indent + line
   297                 yield u"<%s%s>%s</%s>" % (self.name, attrs_stuff, ''.join(super(Tag, self).render_raw_lines(indent=indent)), self.name)
   286 
       
   287             yield u"</%s>" % (self.name, )
       
   288 
       
   289         else :
   298         else :
   290             # singleton tag
   299             # singleton tag
   291             yield u"<%s%s />" % (self.name, attrs_stuff)
   300             yield u"<%s%s />" % (self.name, attrs_stuff)
   292     
   301     
   293 
   302