NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

render.py (2381B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\lib\werkzeug\debug\render.py
      2 import pprint
      3 from os.path import dirname, join
      4 from werkzeug.templates import Template
      5 
      6 def get_template(name):
      7     return Template.from_file(join(dirname(__file__), 'shared', name), unicode_mode=False, errors='ignore')
      8 
      9 
     10 def load_resource(res):
     11     try:
     12         f = file(join(dirname(__file__), 'shared', res))
     13     except IOError:
     14         return ''
     15 
     16     try:
     17         return f.read()
     18     finally:
     19         f.close()
     20 
     21 
     22 t_body = get_template('body.tmpl')
     23 t_codetable = get_template('codetable.tmpl')
     24 t_vartable = get_template('vartable.tmpl')
     25 
     26 def code_table(frame):
     27     from werkzeug.debug.util import Namespace
     28     lines = []
     29     lineno = frame['context_lineno']
     30     if lineno is not None:
     31         lineno += 1
     32         for l in frame['pre_context']:
     33             lines.append(Namespace(mode='pre', lineno=lineno, code=l))
     34             lineno += 1
     35 
     36         lines.append(Namespace(mode='cur', lineno=lineno, code=frame['context_line']))
     37         lineno += 1
     38         for l in frame['post_context']:
     39             lines.append(Namespace(mode='post', lineno=lineno, code=l))
     40             lineno += 1
     41 
     42     else:
     43         lines.append(Namespace(mode='cur', lineno=1, code='Sourcecode not available'))
     44     return t_codetable.render(lines=lines)
     45 
     46 
     47 def var_table(var):
     48 
     49     def safe_pformat(x):
     50         try:
     51             lines = pprint.pformat(x).splitlines()
     52         except:
     53             return '?'
     54 
     55         tmp = []
     56         for line in lines:
     57             if len(line) > 79:
     58                 line = line[:79] + '...'
     59             tmp.append(line)
     60 
     61         return '\n'.join(tmp)
     62 
     63     if isinstance(var, dict) or hasattr(var, 'items'):
     64         value = var.items()
     65         if not value:
     66             typ = 'empty'
     67         else:
     68             typ = 'dict'
     69             value.sort()
     70             value = [ (repr(key), safe_pformat(val)) for key, val in value ]
     71     elif isinstance(var, list):
     72         if not var:
     73             typ = 'empty'
     74         else:
     75             typ = 'list'
     76         value = [ safe_pformat(item) for item in var ]
     77     else:
     78         typ = 'simple'
     79         value = repr(var)
     80     return t_vartable.render(type=typ, value=value)
     81 
     82 
     83 def debug_page(context):
     84     tc = context.to_dict()
     85     tc['var_table'] = var_table
     86     tc['code_table'] = code_table
     87     return t_body.render(tc)