Mercurial > genshi > genshi-test
comparison markup/eval.py @ 132:0288dedce3d2
Name lookup in expressions: try locals first, then the context.
author | cmlenz |
---|---|
date | Fri, 04 Aug 2006 13:39:11 +0000 |
parents | 203f459e7e26 |
children | b9a0031d4bbb |
comparison
equal
deleted
inserted
replaced
131:203f459e7e26 | 132:0288dedce3d2 |
---|---|
102 if isinstance(filename, unicode): | 102 if isinstance(filename, unicode): |
103 # unicode file names not allowed for code objects | 103 # unicode file names not allowed for code objects |
104 filename = filename.encode('utf-8', 'replace') | 104 filename = filename.encode('utf-8', 'replace') |
105 elif not filename: | 105 elif not filename: |
106 filename = '<string>' | 106 filename = '<string>' |
107 tree.filename = '<string>' | 107 tree.filename = filename |
108 if lineno <= 0: | 108 if lineno <= 0: |
109 lineno = 1 | 109 lineno = 1 |
110 | 110 |
111 gen = ExpressionCodeGenerator(tree) | 111 gen = ExpressionCodeGenerator(tree) |
112 gen.optimized = True | 112 gen.optimized = True |
117 return new.code(0, code.co_nlocals, code.co_stacksize, | 117 return new.code(0, code.co_nlocals, code.co_stacksize, |
118 code.co_flags | 0x0040, code.co_code, code.co_consts, | 118 code.co_flags | 0x0040, code.co_code, code.co_consts, |
119 code.co_names, code.co_varnames, filename, code.co_name, | 119 code.co_names, code.co_varnames, filename, code.co_name, |
120 lineno, code.co_lnotab, (), ()) | 120 lineno, code.co_lnotab, (), ()) |
121 | 121 |
122 def _lookup_name(data, name, locals=None): | 122 def _lookup_name(data, name, locals_=None): |
123 val = data.get(name) | 123 val = None |
124 if val is None and locals: | 124 if locals_: |
125 val = locals.get(name) | 125 val = locals_.get(name) |
126 if val is None: | |
127 val = data.get(name) | |
126 if val is None: | 128 if val is None: |
127 val = getattr(__builtin__, name, None) | 129 val = getattr(__builtin__, name, None) |
128 return val | 130 return val |
129 | 131 |
130 def _lookup_attr(data, obj, key): | 132 def _lookup_attr(data, obj, key): |