# Twisted, the Framework of Your Internet # Copyright (C) 2001 Matthew W. Lefkowitz # # This library is free software; you can redistribute it and/or # modify it under the terms of version 2.1 of the GNU Lesser General Public # License as published by the Free Software Foundation. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA """I hold HTML generation helpers. """ #t.w imports from twisted.web import resource import traceback, string from cStringIO import StringIO def unescape(text): "Perform the exact opposite of 'escape'." for s, h in [('&', '&'), #order is important ('<', '<'), ('>', '>'), ('"', '"')]: text = text.replace(h, s) return text def escape(text): "Escape a few HTML special chars with HTML entities." for s, h in [('&', '&'), #order is important ('<', '<'), ('>', '>'), ('"', '"')]: text = text.replace(s,h) return text def PRE(text): "Wrap
 tags around some text and escape it with web.escape."
    return "
"+escape(text)+"
" def UL(lst): io = StringIO() io.write("") return io.getvalue() def linkList(lst): io = StringIO() io.write("") return io.getvalue() def output(func, *args, **kw): """output(func, *args, **kw) -> html string Either return the result of a function (which presumably returns an HTML-legal string) or an HTMLized traceback describing why that function didn't run. """ try: return apply(func, args, kw) except: io = StringIO() return PRE(io.getvalue())