diff options
| -rw-r--r-- | CHANGES | 1 | ||||
| -rw-r--r-- | sqlparse/lexer.py | 1 | ||||
| -rw-r--r-- | tests/test_parse.py | 7 |
3 files changed, 9 insertions, 0 deletions
@@ -3,6 +3,7 @@ Development Version Enhancements * New option to truncate long string literals when formatting. +* Scientific numbers are pares correctly (issue107). Release 0.1.8 (Jun 29, 2013) diff --git a/sqlparse/lexer.py b/sqlparse/lexer.py index 00d0462..45ba4cb 100644 --- a/sqlparse/lexer.py +++ b/sqlparse/lexer.py @@ -190,6 +190,7 @@ class Lexer(object): (r'@[^\W\d_]\w+', tokens.Name), (r'[^\W\d_]\w*(?=[.(])', tokens.Name), # see issue39 (r'[-]?0x[0-9a-fA-F]+', tokens.Number.Hexadecimal), + (r'[-]?[0-9]*(\.[0-9]+)?[eE][-]?[0-9]+', tokens.Number.Float), (r'[-]?[0-9]*\.[0-9]+', tokens.Number.Float), (r'[-]?[0-9]+', tokens.Number.Integer), # TODO: Backslash escapes? diff --git a/tests/test_parse.py b/tests/test_parse.py index 10da8e1..953a237 100644 --- a/tests/test_parse.py +++ b/tests/test_parse.py @@ -150,3 +150,10 @@ def test_placeholder(ph): p = sqlparse.parse(ph)[0].tokens assert len(p) == 1 assert p[0].ttype is T.Name.Placeholder + + +@pytest.mark.parametrize('num', ['6.67428E-8', '1.988e33', '1e-12']) +def test_scientific_numbers(num): + p = sqlparse.parse(num)[0].tokens + assert len(p) == 1 + assert p[0].ttype is T.Number.Float |
