diff options
author | Darik Gamble <darik.gamble@gmail.com> | 2015-03-04 10:41:34 -0500 |
---|---|---|
committer | Darik Gamble <darik.gamble@gmail.com> | 2015-03-04 10:41:34 -0500 |
commit | b61fe36f718ca4f7c0b4e8d1cb81cc1370877905 (patch) | |
tree | 4f8d9f55cd82a2d525082eab5c2f99e7d3ac8134 | |
parent | a93029f38fc2a1a182da92cf361d700cbe2b79c2 (diff) | |
download | sqlparse-b61fe36f718ca4f7c0b4e8d1cb81cc1370877905.tar.gz |
Group square-brackets into identifiers
Indentifier.get_array_indices() looks for square brackets, and yields lists of bracket grouped tokens as array indices
-rw-r--r-- | sqlparse/engine/grouping.py | 9 | ||||
-rw-r--r-- | sqlparse/sql.py | 9 |
2 files changed, 10 insertions, 8 deletions
diff --git a/sqlparse/engine/grouping.py b/sqlparse/engine/grouping.py index 73679e3..a317044 100644 --- a/sqlparse/engine/grouping.py +++ b/sqlparse/engine/grouping.py @@ -159,16 +159,17 @@ def group_identifier(tlist): lambda y: (y.match(T.Punctuation, '.') or y.ttype in (T.Operator, T.Wildcard, - T.ArrayIndex, - T.Name)), + T.Name) + or isinstance(y, sql.SquareBrackets)), lambda y: (y.ttype in (T.String.Symbol, T.Name, T.Wildcard, - T.ArrayIndex, T.Literal.String.Single, T.Literal.Number.Integer, T.Literal.Number.Float) - or isinstance(y, (sql.Parenthesis, sql.Function))))) + or isinstance(y, (sql.Parenthesis, + sql.SquareBrackets, + sql.Function))))) for t in tl.tokens[i:]: # Don't take whitespaces into account. if t.ttype is T.Whitespace: diff --git a/sqlparse/sql.py b/sqlparse/sql.py index 25d5243..9fcb546 100644 --- a/sqlparse/sql.py +++ b/sqlparse/sql.py @@ -511,11 +511,12 @@ class Identifier(TokenList): return ordering.value.upper() def get_array_indices(self): - """Returns an iterator of index expressions as strings""" + """Returns an iterator of index token lists""" - # Use [1:-1] index to discard the square brackets - return (tok.value[1:-1] for tok in self.tokens - if tok.ttype in T.ArrayIndex) + for tok in self.tokens: + if isinstance(tok, SquareBrackets): + # Use [1:-1] index to discard the square brackets + yield tok.tokens[1:-1] class IdentifierList(TokenList): |