From a37b99ed25f36665b5e8604352e059720a25758d Mon Sep 17 00:00:00 2001 From: "Rafael H. Schloming" Date: Thu, 11 Nov 2010 15:59:45 +0000 Subject: added address parser support for None git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1033975 13f79535-47bb-0310-9956-ffa450edef68 --- python/qpid/messaging/address.py | 5 ++++- python/qpid/tests/messaging/address.py | 11 +++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) (limited to 'python') diff --git a/python/qpid/messaging/address.py b/python/qpid/messaging/address.py index bf494433e4..bcf45f6698 100644 --- a/python/qpid/messaging/address.py +++ b/python/qpid/messaging/address.py @@ -33,6 +33,7 @@ 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]") @@ -65,6 +66,8 @@ def tok2obj(tok): return True elif tok.type == FALSE: return False + elif tok.type == NONE: + return None else: return tok.value @@ -133,7 +136,7 @@ class AddressParser(Parser): return (key, val) def value(self): - if self.matches(NUMBER, STRING, ID, TRUE, FALSE): + if self.matches(NUMBER, STRING, ID, TRUE, FALSE, NONE): return tok2obj(self.eat()) elif self.matches(LBRACE): return self.map() diff --git a/python/qpid/tests/messaging/address.py b/python/qpid/tests/messaging/address.py index 7adbc0c6f7..869cf55cba 100644 --- a/python/qpid/tests/messaging/address.py +++ b/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, NUMBER, SYM, WSPACE, \ - LEXER +from qpid.messaging.address import lex, parse, ParseError, EOF, ID, NONE, \ + NUMBER, SYM, WSPACE, LEXER from qpid.lexer import Token from qpid.harness import Skipped from qpid.tests.parser import ParserBase @@ -149,6 +149,9 @@ class AddressTests(ParserBase, Test): def testNegativeNum(self): self.lex("-3", NUMBER) + def testNone(self): + self.lex("None", NONE) + def testHash(self): self.valid("foo/bar.#", "foo", "bar.#") @@ -166,6 +169,10 @@ class AddressTests(ParserBase, Test): self.valid("name/subject; {key: value,}", "name", "subject", {"key": "value"}) + def testOptionsNone(self): + self.valid("name/subject; {key: None}", "name", "subject", + {"key": None}) + def testSemiSubject(self): self.valid("foo.bar/'baz.qux;moo:arf'; {key: value}", "foo.bar", "baz.qux;moo:arf", {"key": "value"}) -- cgit v1.2.1