diff options
| author | Andi Albrecht <albrecht.andi@gmail.com> | 2009-05-03 21:32:27 +0200 |
|---|---|---|
| committer | Andi Albrecht <albrecht.andi@gmail.com> | 2009-05-03 21:32:27 +0200 |
| commit | 5ee6aed6aef8f8ffeeef67e3909bf8a72e9213b8 (patch) | |
| tree | 27d8f5ac36ed9300407ba7bbeaf433abdf7617ed /sqlparse/sql.py | |
| parent | 118d6bb96a03003460d2cea1af74f2b362458037 (diff) | |
| download | sqlparse-5ee6aed6aef8f8ffeeef67e3909bf8a72e9213b8.tar.gz | |
Improved parsing of identifier lists (targets issue2).
Diffstat (limited to 'sqlparse/sql.py')
| -rw-r--r-- | sqlparse/sql.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/sqlparse/sql.py b/sqlparse/sql.py index e17285c..d1ee143 100644 --- a/sqlparse/sql.py +++ b/sqlparse/sql.py @@ -204,12 +204,24 @@ class TokenList(Token): return token return None + def token_matching(self, idx, funcs): + for token in self.tokens[idx:]: + for i, func in enumerate(funcs): + if func(token): + print 'MATCHED', i, token + return token + return None + def token_prev(self, idx, skip_ws=True): """Returns the previous token relative to *idx*. If *skip_ws* is ``True`` (the default) whitespace tokens are ignored. ``None`` is returned if there's no previous token. """ + if idx is None: + return None + if not isinstance(idx, int): + idx = self.token_index(idx) while idx != 0: idx -= 1 if self.tokens[idx].is_whitespace() and skip_ws: @@ -222,6 +234,10 @@ class TokenList(Token): If *skip_ws* is ``True`` (the default) whitespace tokens are ignored. ``None`` is returned if there's no next token. """ + if idx is None: + return None + if not isinstance(idx, int): + idx = self.token_index(idx) while idx < len(self.tokens)-1: idx += 1 if self.tokens[idx].is_whitespace() and skip_ws: |
