""" Magic Method Hack #1: Generating HTML (version 3) Changed the constructor of ``Tag`` to accept keyword arguments. Also, we show how to create more interesting "tag" objects. """ import os, copy, webbrowser class Tag(object): def __init__(self, name, **kwargs): self.name = name self.attrs = kwargs self.children = [] def __call__(self, **kwargs): tag = copy.deepcopy(self) tag.attrs.update(kwargs) return tag def __getitem__(self, args): tag = copy.deepcopy(self) if isinstance(args, tuple): tag.children.extend(args) else: tag.children.append(args) return tag def __str__(self): result = '<' + self.name if self.attrs: result += ' ' result += ' '.join('%s="%s"' % item for item in self.attrs.items()) if self.children: result += '>' result += ''.join(str(c) for c in self.children) result += '%s>\n' % self.name else: result += ' />\n' return result def dijit(tag): return """