Mercurial > genshi > genshi-test
comparison markup/eval.py @ 138:d91e1e822969
Add some more assertions to the XPath tests.
author | cmlenz |
---|---|
date | Wed, 09 Aug 2006 12:07:26 +0000 |
parents | df44110ca91d |
children | 56d534eb53f9 |
comparison
equal
deleted
inserted
replaced
137:38ddb21b6fa4 | 138:d91e1e822969 |
---|---|
93 retval = retval() | 93 retval = retval() |
94 return retval | 94 return retval |
95 | 95 |
96 | 96 |
97 def _compile(expr, filename=None, lineno=-1): | 97 def _compile(expr, filename=None, lineno=-1): |
98 tree = parse(expr.source, 'eval') | 98 tree = ExpressionASTTransformer().visit(parse(expr.source, 'eval')) |
99 xform = ExpressionASTTransformer() | |
100 tree = xform.visit(tree) | |
101 | |
102 if isinstance(filename, unicode): | 99 if isinstance(filename, unicode): |
103 # unicode file names not allowed for code objects | 100 # unicode file names not allowed for code objects |
104 filename = filename.encode('utf-8', 'replace') | 101 filename = filename.encode('utf-8', 'replace') |
105 elif not filename: | 102 elif not filename: |
106 filename = '<string>' | 103 filename = '<string>' |
147 try: | 144 try: |
148 return getattr(obj, key) | 145 return getattr(obj, key) |
149 except (AttributeError, TypeError), e: | 146 except (AttributeError, TypeError), e: |
150 pass | 147 pass |
151 | 148 |
149 | |
152 class ASTTransformer(object): | 150 class ASTTransformer(object): |
153 """General purpose base class for AST transformations. | 151 """General purpose base class for AST transformations. |
154 | 152 |
155 Every visitor method can be overridden to return an AST node that has been | 153 Every visitor method can be overridden to return an AST node that has been |
156 altered or replaced in some way. | 154 altered or replaced in some way. |