Changeset 124
- Timestamp:
- 08/09/07 18:45:42
- Files:
-
- branches/ast/geniusql/astwalk.py (modified) (4 diffs)
- branches/ast/geniusql/deparse.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/ast/geniusql/astwalk.py
r123 r124 78 78 dstar_args = None 79 79 _root = None 80 ## parameters = None81 80 82 81 def __init__(self, root=None, args=None, kwargs=None, … … 87 86 self.star_args = star_args 88 87 self.dstar_args = dstar_args 89 ## self.parameters = []90 88 91 89 def _get_root(self): … … 93 91 def _set_root(self, root): 94 92 self._root = root 95 ## # re-calc parameters96 ## self.parameters = []97 ## if root and isinstance(root, ast.Node):98 ## def walk(node):99 ## if isinstance(node, Parameter):100 ## node.paramindex = len(self.parameters)101 ## self.parameters.append(node.value)102 ## for child in node.getChildNodes():103 ## walk(child)104 ## walk(root)105 93 root = property(_get_root, _set_root, "The root node of the AST") 106 94 … … 109 97 (self.root, self.args, self.kwargs, 110 98 self.star_args, self.dstar_args)) 111 112 113 class Parameter(ast.Node):114 """A substitute Node for Const. Doesn't report its value in repr."""115 116 paramindex = None117 118 def __init__(self, value, lineno=None):119 self.value = value120 self.lineno = lineno121 122 def getChildren(self):123 return self.value, self.paramindex124 125 def getChildNodes(self):126 return ()127 128 def __repr__(self):129 return "Parameter()"130 99 131 100 branches/ast/geniusql/deparse.py
r123 r124 1 1 import datetime 2 from types import FunctionType 2 from types import FunctionType, NoneType 3 3 from geniusql import logic, astwalk 4 4 … … 129 129 sql_bin_op = dict([(v, v) for v in astwalk.codewalk.binary_repr.itervalues()]) 130 130 131 none_expr = SQLExpression("NULL", "expr0", None, type(None))131 none_expr = SQLExpression("NULL", "expr0", None, NoneType) 132 132 133 133 def __init__(self, tables, expr, typeset): … … 439 439 like_escapes = [("%", r"\%"), ("_", r"\_")] 440 440 441 def escape_like(self, value):441 def escape_like(self, sql): 442 442 """Prepare a string value for use in a LIKE comparison.""" 443 if not isinstance(value, str):444 value = value.encode(self.encoding)445 443 # Notice we strip leading and trailing quote-marks. 446 value = value.strip("'\"")444 sql = sql.strip("'\"") 447 445 for pat, repl in self.like_escapes: 448 value = value.replace(pat, repl)449 return value446 sql = sql.replace(pat, repl) 447 return sql 450 448 451 449 def attr_startswith(self, tos, arg):
