261 |
261 |
262 >>> Tag('x', foo=5, bar='<').render_attrs() |
262 >>> Tag('x', foo=5, bar='<').render_attrs() |
263 u'foo="5" bar="<"' |
263 u'foo="5" bar="<"' |
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 |