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.
Copyright (C) 2012-2017 Edgewall Software