diff options
| author | Vik <vmuriart@gmail.com> | 2016-08-13 10:54:29 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-08-13 10:54:29 -0700 |
| commit | 47dbacf650b287488d7e86238b74e3dee23af98f (patch) | |
| tree | 005e02b00323cd039bfe8ff9a913bd406f5d124a /sqlparse | |
| parent | 2704243f2da01c66b0e99a53d3f99e72f1e1c4d6 (diff) | |
| parent | d11c96aac41521bf6000ca27cbdf330cc656b926 (diff) | |
| download | sqlparse-47dbacf650b287488d7e86238b74e3dee23af98f.tar.gz | |
Merge pull request #282 from vmuriart/alt_277
Alternate solution for #277
Diffstat (limited to 'sqlparse')
| -rw-r--r-- | sqlparse/keywords.py | 13 | ||||
| -rw-r--r-- | sqlparse/lexer.py | 7 |
2 files changed, 4 insertions, 16 deletions
diff --git a/sqlparse/keywords.py b/sqlparse/keywords.py index eef0d02..dee4030 100644 --- a/sqlparse/keywords.py +++ b/sqlparse/keywords.py @@ -10,22 +10,13 @@ import re from sqlparse import tokens -def is_keyword(value, remaining): +def is_keyword(value): val = value.upper() return (KEYWORDS_COMMON.get(val) or KEYWORDS_ORACLE.get(val) or KEYWORDS.get(val, tokens.Name)), value -def parse_literal_string(value, remaining): - try: - end = remaining[len(value):].index(value) - except ValueError: - return tokens.Name.Builtin, value - literal = remaining[:end + (len(value) * 2)] - return tokens.Literal, literal - - SQL_REGEX = { 'root': [ (r'(--|# )\+.*?(\r\n|\r|\n|$)', tokens.Comment.Single.Hint), @@ -44,7 +35,7 @@ SQL_REGEX = { (r"`(``|[^`])*`", tokens.Name), (r"´(´´|[^´])*´", tokens.Name), - (r'\$([_A-Z]\w*)?\$', parse_literal_string), + (r'(\$(?:[_A-Z]\w*)?\$)[\s\S]*?\1', tokens.Literal), (r'\?', tokens.Name.Placeholder), (r'%(\(\w+\))?s', tokens.Name.Placeholder), diff --git a/sqlparse/lexer.py b/sqlparse/lexer.py index 1979550..e7996b2 100644 --- a/sqlparse/lexer.py +++ b/sqlparse/lexer.py @@ -50,14 +50,11 @@ class Lexer(object): if not m: continue elif isinstance(action, tokens._TokenType): - consume_pos = m.end() - pos - 1 yield action, m.group() elif callable(action): - ttype, value = action(m.group(), text[pos:]) - consume_pos = len(value) - 1 - yield ttype, value + yield action(m.group()) - consume(iterable, consume_pos) + consume(iterable, m.end() - pos - 1) break else: yield tokens.Error, char |
