Ticket #192: tag-join.patch
| File tag-join.patch, 1.8 KB (added by Carsten Klein <carsten.klein@…>, 13 years ago) |
|---|
-
builder.py
242 244 >>> print(Element(xhtml.html, lang='en')) 243 245 <html xmlns="http://www.w3.org/1999/xhtml" lang="en"/> 244 246 """ 245 __slots__ = ['tag', 'attrib' ]247 __slots__ = ['tag', 'attrib', 'siblings'] 246 248 247 249 def __init__(self, tag_, **attrib): 248 250 Fragment.__init__(self) 249 251 self.tag = QName(tag_) 250 252 self.attrib = _kwargs_to_attrs(attrib) 253 self.siblings = [] 251 254 252 255 def __call__(self, *args, **kwargs): 253 256 """Append any positional arguments as child nodes, and keyword arguments … … 270 273 yield kind, data, pos 271 274 yield END, self.tag, (None, -1, -1) 272 275 276 for sibling in self.siblings: 277 if isinstance(sibling, Element): 278 for event in sibling._generate(): 279 yield event 280 elif isinstance(sibling, Stream): 281 for event in sibling: 282 yield event 283 else: 284 if not isinstance(sibling, basestring): 285 child = unicode(sibling) 286 yield TEXT, sibling, (None, -1, -1) 287 273 288 def generate(self): 274 289 """Return a markup event stream for the fragment. 275 290 276 291 :rtype: `Stream` 277 292 """ 293 # FIXME:axn must be Stream(self._generate) to make it JIT 294 # return Stream(self._generate) 278 295 return Stream(self._generate()) 279 296 297 def join(self, *args): 298 for arg in args: 299 if isinstance(arg, list): 300 for sibling in arg: 301 self.siblings.append(sibling) 302 else: 303 self.siblings.append(arg) 304 return self 280 305 306 281 307 class ElementFactory(object): 282 308 """Factory for `Element` objects. 283 309
