diff options
Diffstat (limited to 'creactivistore/_templates/lib/werkzeug/debug/render.py')
-rw-r--r-- | creactivistore/_templates/lib/werkzeug/debug/render.py | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/creactivistore/_templates/lib/werkzeug/debug/render.py b/creactivistore/_templates/lib/werkzeug/debug/render.py new file mode 100644 index 0000000..7f0692a --- /dev/null +++ b/creactivistore/_templates/lib/werkzeug/debug/render.py @@ -0,0 +1,103 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.debug.render + ~~~~~~~~~~~~~~~~~~~~~ + + Render the traceback debugging page. + + :copyright: (c) 2010 by the Werkzeug Team, see AUTHORS for more details. + :license: BSD, see LICENSE for more details. +""" +import pprint +from os.path import dirname, join + +from werkzeug.templates import Template + + +def get_template(name): + return Template.from_file(join(dirname(__file__), 'shared', name), + unicode_mode=False, errors='ignore') + + +def load_resource(res): + try: + f = file(join(dirname(__file__), 'shared', res)) + except IOError: + return '' + try: + return f.read() + finally: + f.close() + + +t_body = get_template('body.tmpl') +t_codetable = get_template('codetable.tmpl') +t_vartable = get_template('vartable.tmpl') + + +def code_table(frame): + from werkzeug.debug.util import Namespace + lines = [] + lineno = frame['context_lineno'] + if lineno is not None: + lineno += 1 + for l in frame['pre_context']: + lines.append(Namespace(mode='pre', lineno=lineno, code=l)) + lineno += 1 + lines.append(Namespace(mode='cur', lineno=lineno, + code=frame['context_line'])) + lineno += 1 + for l in frame['post_context']: + lines.append(Namespace(mode='post', lineno=lineno, code=l)) + lineno += 1 + else: + lines.append(Namespace(mode='cur', lineno=1, + code='Sourcecode not available')) + + return t_codetable.render(lines=lines) + + +def var_table(var): + def safe_pformat(x): + try: + lines = pprint.pformat(x).splitlines() + except: + return '?' + tmp = [] + for line in lines: + if len(line) > 79: + line = line[:79] + '...' + tmp.append(line) + return '\n'.join(tmp) + + # dicts + if isinstance(var, dict) or hasattr(var, 'items'): + value = var.items() + if not value: + typ = 'empty' + else: + typ = 'dict' + value.sort() + value = [(repr(key), safe_pformat(val)) for key, val in value] + + # lists + elif isinstance(var, list): + if not var: + typ = 'empty' + else: + typ = 'list' + value = [safe_pformat(item) for item in var] + + # others + else: + typ = 'simple' + value = repr(var) + + return t_vartable.render(type=typ, value=value) + + +def debug_page(context): + tc = context.to_dict() + tc['var_table'] = var_table + tc['code_table'] = code_table + return t_body.render(tc) |