Skip to content
Snippets Groups Projects
Commit 7b111884fdde authored by Sylvain Thénault's avatar Sylvain Thénault
Browse files

enhance Select.replace method

parent 73216278aa9e
No related branches found
No related tags found
No related merge requests found
...@@ -19,4 +19,5 @@ ...@@ -19,4 +19,5 @@
This module defines only first level nodes (i.e. statements). Child nodes are This module defines only first level nodes (i.e. statements). Child nodes are
defined in the nodes module defined in the nodes module
"""
...@@ -22,5 +23,4 @@ ...@@ -22,5 +23,4 @@
"""
__docformat__ = "restructuredtext en" __docformat__ = "restructuredtext en"
from copy import deepcopy from copy import deepcopy
...@@ -398,7 +398,7 @@ ...@@ -398,7 +398,7 @@
# select clauses # select clauses
groupby = () groupby = ()
orderby = () orderby = ()
having = () having = () # XXX now a single node
with_ = () with_ = ()
# set by the annotator # set by the annotator
has_aggregat = False has_aggregat = False
...@@ -678,6 +678,20 @@ ...@@ -678,6 +678,20 @@
self.selection.append(term) self.selection.append(term)
def replace(self, oldnode, newnode): def replace(self, oldnode, newnode):
assert oldnode is self.where if oldnode is self.where:
self.where = newnode self.where = newnode
elif oldnode in self.selection:
self.selection[self.selection.index(oldnode)] = newnode
elif oldnode in self.orderby:
self.orderby[self.orderby.index(oldnode)] = newnode
elif oldnode in self.groupby:
self.groupby[self.groupby.index(oldnode)] = newnode
elif oldnode in self.having:
self.having[self.having.index(oldnode)] = newnode
else:
raise Exception('duh XXX %s' % oldnode)
# XXX no undo/reference support 'by design' (eg breaks things if you add
# it...)
# XXX resetting oldnode parent cause pb with cw.test_views (w/ facets)
#oldnode.parent = None
newnode.parent = self newnode.parent = self
...@@ -683,11 +697,4 @@ ...@@ -683,11 +697,4 @@
newnode.parent = self newnode.parent = self
# # XXX no vref handling ?
# try:
# Statement.replace(self, oldnode, newnode)
# except ValueError:
# i = self.selection.index(oldnode)
# self.selection.pop(i)
# self.selection.insert(i, newnode)
def remove(self, node): def remove(self, node):
if node is self.where: if node is self.where:
...@@ -696,6 +703,7 @@ ...@@ -696,6 +703,7 @@
self.remove_sort_term(node) self.remove_sort_term(node)
elif node in self.groupby: elif node in self.groupby:
self.remove_group_var(node) self.remove_group_var(node)
# XXX having, selection
else: else:
raise Exception('duh XXX') raise Exception('duh XXX')
node.parent = None node.parent = None
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment