Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/creactiweb/_templates/lib/werkzeug/debug/render.py
diff options
context:
space:
mode:
Diffstat (limited to 'creactiweb/_templates/lib/werkzeug/debug/render.py')
-rw-r--r--creactiweb/_templates/lib/werkzeug/debug/render.py103
1 files changed, 103 insertions, 0 deletions
diff --git a/creactiweb/_templates/lib/werkzeug/debug/render.py b/creactiweb/_templates/lib/werkzeug/debug/render.py
new file mode 100644
index 0000000..7f0692a
--- /dev/null
+++ b/creactiweb/_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)