Mercurial > scratch
comparison pydershell/pydershell.py @ 16:a78570a423ea
Show code excerpts in js stack tracebacks
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Mon, 07 Sep 2009 00:33:56 -0700 |
parents | 351525e95a45 |
children | 1d62177c5c27 |
comparison
equal
deleted
inserted
replaced
15:351525e95a45 | 16:a78570a423ea |
---|---|
106 while js_stack: | 106 while js_stack: |
107 script = js_stack['script'] | 107 script = js_stack['script'] |
108 function = js_stack['function'] | 108 function = js_stack['function'] |
109 if script: | 109 if script: |
110 frameinfo = dict(filename = script.filename, | 110 frameinfo = dict(filename = script.filename, |
111 lineno = js_stack['lineno'], | 111 lineno = js_stack['lineno'], |
112 name = '<module>') | 112 name = '<module>') |
113 elif function and not function.is_python: | 113 elif function and not function.is_python: |
114 frameinfo = dict(filename = function.filename, | 114 frameinfo = dict(filename = function.filename, |
115 lineno = js_stack['lineno'], | 115 lineno = js_stack['lineno'], |
116 name = function.name) | 116 name = function.name) |
117 else: | 117 else: |
118 frameinfo = None | 118 frameinfo = None |
119 if frameinfo: | 119 if frameinfo: |
120 lines.insert(0, STACK_LINE % frameinfo) | 120 lines.insert(0, STACK_LINE % frameinfo) |
121 try: | |
122 filelines = open(frameinfo['filename']).readlines() | |
123 line = filelines[frameinfo['lineno'] - 1].strip() | |
124 lines.insert(1, " %s" % line) | |
125 except Exception: | |
126 pass | |
121 js_stack = js_stack['caller'] | 127 js_stack = js_stack['caller'] |
122 lines.insert(0, "Traceback (most recent call last):") | 128 lines.insert(0, "Traceback (most recent call last):") |
123 return '\n'.join(lines) | 129 return '\n'.join(lines) |
124 | 130 |
125 class JSRuntime(object): | 131 class JSRuntime(object): |