# HG changeset patch # User Stefano Rivera # Date 1378503368 -7200 # Node ID a106d7e1415b625a0125b2cc8995d76f15267dcb # Parent e2cebabf87e8b5b1b546f4e728e59d6457854093 Colons are allowed in strings diff -r e2cebabf87e8 -r a106d7e1415b nagslang/tests/test_yamlish.py --- a/nagslang/tests/test_yamlish.py Fri Sep 06 23:11:37 2013 +0200 +++ b/nagslang/tests/test_yamlish.py Fri Sep 06 23:36:08 2013 +0200 @@ -108,6 +108,14 @@ 0.7: -0.7, }) + def test_dictish_string(self): + self.roundtrip({ + 'strings': [ + 'Foo: bar', + 'Baz: qux', + ], + }) + def test_tuples(self): if self.from_pyyaml: raise SkipTest("Can't parse PyYAML tuples") diff -r e2cebabf87e8 -r a106d7e1415b nagslang/yamlish.py --- a/nagslang/yamlish.py Fri Sep 06 23:11:37 2013 +0200 +++ b/nagslang/yamlish.py Fri Sep 06 23:36:08 2013 +0200 @@ -100,7 +100,7 @@ def _dump_basestring(self, data): if data in ('true', 'false', 'null'): return "'%s'" % data - if "'" in data: + if "'" in data or ':' in data or data.startswith('['): return "'%s'" % data.replace("'", "''") if data == '': return "''" @@ -123,7 +123,7 @@ class Parser(object): _spaces_re = re.compile(r'^(\s*)(.*)') _list_re = re.compile(r'^(-\s+)(.*)') - _dict_re = re.compile(r'^((?![{[])[^-:]+):\s?(.*)') + _dict_re = re.compile(r"^((?![{['])[^-:]+):\s?(.*)") _inline_list_re = re.compile(r"^([^',]+|(?:'')+|'.+?[^'](?:'')*')" r"(?:, (.*))?$")