summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Uriarte <victor.m.uriarte@intel.com>2016-06-05 18:25:52 -0700
committerVictor Uriarte <victor.m.uriarte@intel.com>2016-06-11 04:36:56 -0700
commit14accd01db6171be5d12551a1c0586d1632e7fc2 (patch)
tree41dd5aee698cee8d6eb16c8935afa3ad6f0ccb29
parent954f48431a0fe8ea1749ba0236da23a705bf3b75 (diff)
downloadsqlparse-14accd01db6171be5d12551a1c0586d1632e7fc2.tar.gz
Refactor sql.py group_tokens
first token in group had no parents and almost became batman
-rw-r--r--sqlparse/sql.py30
1 files changed, 11 insertions, 19 deletions
diff --git a/sqlparse/sql.py b/sqlparse/sql.py
index a84dbf3..87354a1 100644
--- a/sqlparse/sql.py
+++ b/sqlparse/sql.py
@@ -279,34 +279,26 @@ class TokenList(Token):
def group_tokens(self, grp_cls, tokens, skip_ws=False, extend=False):
"""Replace tokens by an instance of *grp_cls*."""
- if skip_ws:
- while tokens and tokens[-1].is_whitespace():
- tokens = tokens[:-1]
+
+ while skip_ws and tokens and tokens[-1].is_whitespace():
+ tokens = tokens[:-1]
left = tokens[0]
idx = self.token_index(left)
- if extend:
- if not isinstance(left, grp_cls):
- grp = grp_cls([left])
- self.tokens.remove(left)
- self.tokens.insert(idx, grp)
- left = grp
- left.parent = self
- tokens = tokens[1:]
- left.tokens.extend(tokens)
- left.value = str(left)
-
+ if extend and isinstance(left, grp_cls):
+ grp = left
+ grp.tokens.extend(tokens[1:])
else:
- left = grp_cls(tokens)
- left.parent = self
- self.tokens.insert(idx, left)
+ grp = grp_cls(tokens)
for token in tokens:
- token.parent = left
+ token.parent = grp
self.tokens.remove(token)
- return left
+ self.tokens.insert(idx, grp)
+ grp.parent = self
+ return grp
def insert_before(self, where, token):
"""Inserts *token* before *where*."""