> > Just in case the thought of not having a millionth implementation of a > > HTML/XML generator for Python makes the world as we know it a > > miserable place, well then your suffering might be over soon since > > exactly the one millionth implementation is out. You can download > > markup.py from > > > > http://markup.sourceforge.net/ > > > > (Corrected the link). > > You opened a door I was pushing! > > I wrote a HTML generator a few weeks ago to generate a static site, but > it was only a little less tortuous to use than writing out the HTML by > hand. I wanted to do things the way 'markup.py' does but couldn't > manage it. Then I read your code, added straightforward '__getattr__' > and '__call__' methods to my own code, and now I need only half the > 'LOC' that I did before. > > Before I did this: > > page = HtmlPage('Test Page') > left_div = page.append( HtmlElement('div', id='left') ) > main_div = page.append( HtmlElement('div', id='main') ) > navbar = HtmlElement('ul', css='navbar') > for href,link in {'/home':'Home', '/shop':'Shop', > '/cart':'Cart'}.iteritems(): > li = navbar.append( HtmlElement('li') ) > li.append( HtmlElement('a',link, href=href) ) > left_div.append(navbar) > main_div.append( HtmlElement('h1','Header') ) > main_div.append( HtmlElement('p','<Text Goes Here>') ) > > Now I can do this: > > page = HtmlPage('Test Page') > navbar = page.div(id='left').ul(css='navbar') > for href,link in {'/home':'Home', '/shop':'Shop', > '/cart':'Cart'}.iteritems(): > navbar.li.a(link,href=href) > page.div(id='main').h1('Header').p('<Text Goes Here>') > > > So *that's* what '__call__' does - I am enlightened! > > Thanks a lot. > > Here's mine: > > http://www.gflanagan.net/site/python/htmlbuilder/htmlbuilder.py > > (So, 'More than one million ways to do it' then...) > > Gerard
Well, I'm glad you like it! And thanks for correcting the link, I didn't even notice, so the correct link is http://markup.sourceforge.net/ But I guess that was pretty obvious :) Your implementation also looks all right, the only thing is that it has dependencies outside the stdlib which some people might find not so nice. -- http://mail.python.org/mailman/listinfo/python-list