diff options
author | Rafael H. Schloming <rhs@apache.org> | 2011-01-13 16:37:59 +0000 |
---|---|---|
committer | Rafael H. Schloming <rhs@apache.org> | 2011-01-13 16:37:59 +0000 |
commit | e0ddf2a789bafa04a295a020d03a7b254950dced (patch) | |
tree | c9df3de2ca254cd19b62bfed49201134f901ab50 | |
parent | 9d71144ea9ae463394506888e3e275c74c2eb486 (diff) | |
download | qpid-python-e0ddf2a789bafa04a295a020d03a7b254950dced.tar.gz |
made address parser recognize lowercase true and false
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1058654 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | qpid/python/qpid/messaging/address.py | 23 | ||||
-rw-r--r-- | qpid/python/qpid/tests/messaging/address.py | 17 |
2 files changed, 23 insertions, 17 deletions
diff --git a/qpid/python/qpid/messaging/address.py b/qpid/python/qpid/messaging/address.py index bcf45f6698..e423f09193 100644 --- a/qpid/python/qpid/messaging/address.py +++ b/qpid/python/qpid/messaging/address.py @@ -31,9 +31,6 @@ SEMI = l.define("SEMI", r";") SLASH = l.define("SLASH", r"/") COMMA = l.define("COMMA", r",") NUMBER = l.define("NUMBER", r'[+-]?[0-9]*\.?[0-9]+') -TRUE = l.define("TRUE", r'True') -FALSE = l.define("FALSE", r'False') -NONE = l.define("NONE", r'None') ID = l.define("ID", r'[a-zA-Z_](?:[a-zA-Z0-9_-]*[a-zA-Z0-9_])?') STRING = l.define("STRING", r""""(?:[^\\"]|\\.)*"|'(?:[^\\']|\\.)*'""") ESC = l.define("ESC", r"\\[^ux]|\\x[0-9a-fA-F][0-9a-fA-F]|\\u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]") @@ -59,15 +56,19 @@ def tok2str(tok): else: return tok.value +CONSTANTS = { + "True": True, + "true": True, + "False": False, + "false": False, + "None": None + } + def tok2obj(tok): - if tok.type in (STRING, NUMBER): + if tok.type == ID: + return CONSTANTS.get(tok.value, tok.value) + elif tok.type in (STRING, NUMBER): return eval(tok.value) - elif tok.type == TRUE: - return True - elif tok.type == FALSE: - return False - elif tok.type == NONE: - return None else: return tok.value @@ -136,7 +137,7 @@ class AddressParser(Parser): return (key, val) def value(self): - if self.matches(NUMBER, STRING, ID, TRUE, FALSE, NONE): + if self.matches(NUMBER, STRING, ID): return tok2obj(self.eat()) elif self.matches(LBRACE): return self.map() diff --git a/qpid/python/qpid/tests/messaging/address.py b/qpid/python/qpid/tests/messaging/address.py index 869cf55cba..aa9562a717 100644 --- a/qpid/python/qpid/tests/messaging/address.py +++ b/qpid/python/qpid/tests/messaging/address.py @@ -19,8 +19,8 @@ from qpid.tests import Test -from qpid.messaging.address import lex, parse, ParseError, EOF, ID, NONE, \ - NUMBER, SYM, WSPACE, LEXER +from qpid.messaging.address import lex, parse, ParseError, EOF, ID, NUMBER, \ + SYM, WSPACE, LEXER from qpid.lexer import Token from qpid.harness import Skipped from qpid.tests.parser import ParserBase @@ -149,8 +149,11 @@ class AddressTests(ParserBase, Test): def testNegativeNum(self): self.lex("-3", NUMBER) - def testNone(self): - self.lex("None", NONE) + def testIdNum(self): + self.lex("id1", ID) + + def testIdSpaceNum(self): + self.lex("id 1", ID, NUMBER) def testHash(self): self.valid("foo/bar.#", "foo", "bar.#") @@ -312,5 +315,7 @@ class AddressTests(ParserBase, Test): "name", "subject", {"foo.bar": "value"}) def testBoolean(self): - self.valid("name/subject; { true: True, false: False }", - "name", "subject", {"true": True, "false": False}) + self.valid("name/subject; { true1: True, true2: true, " + "false1: False, false2: false }", + "name", "subject", {"true1": True, "true2": True, + "false1": False, "false2": False}) |