diff --git a/libpathod/language.py b/libpathod/language.py index 0b49c2dee..654dc37ed 100644 --- a/libpathod/language.py +++ b/libpathod/language.py @@ -136,7 +136,7 @@ v_literal = pp.MatchFirst( v_naked_literal = pp.MatchFirst( [ v_literal, - pp.Word("".join(i for i in pp.printables if i not in ",:\n")) + pp.Word("".join(i for i in pp.printables if i not in ",:\n@\'\"")) ] ) @@ -479,7 +479,7 @@ class Path(_Component): @classmethod def expr(klass): - e = NakedValue.copy() + e = Value | NakedValue return e.setParseAction(lambda x: klass(*x)) def values(self, settings): diff --git a/test/test_language.py b/test/test_language.py index a6f735f11..b02a89dd5 100644 --- a/test/test_language.py +++ b/test/test_language.py @@ -169,6 +169,7 @@ class TestMisc: v2 = v.freeze({}) v3 = v2.freeze({}) assert v2.value.val == v3.value.val + assert len(v2.value.val) == 100 s = v.spec() assert s == v.expr().parseString(s)[0].spec() @@ -488,6 +489,10 @@ class TestRequest: r = language.parse_request({}, "GET:/:b@100").freeze({}) assert len(r.spec()) > 100 + def test_path_generator(self): + r = language.parse_request({}, "GET:@100").freeze({}) + assert len(r.spec()) > 100 + class TestWriteValues: def test_send_chunk(self):