Skip to content

Commit 86d576f

Browse files
handle #base & #include + extra symbols; #9
1 parent 06a9b5c commit 86d576f

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

tests/test_vdf.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,27 @@ def test_comments_and_blank_lines(self):
275275

276276
self.assertEqual(vdf.loads(INPUT), EXPECTED)
277277

278+
def test_hash_key(self):
279+
INPUT = '#include "asd.vdf"'
280+
EXPECTED = {'#include': 'asd.vdf'}
281+
282+
self.assertEqual(vdf.loads(INPUT), EXPECTED)
283+
284+
INPUT = '#base asd.vdf'
285+
EXPECTED = {'#base': 'asd.vdf'}
286+
287+
self.assertEqual(vdf.loads(INPUT), EXPECTED)
288+
289+
def test_wierd_symbols_for_unquoted(self):
290+
INPUT = 'a asd.vdf\nb language_*lol*\nc zxc_-*.sss//'
291+
EXPECTED = {
292+
'a': 'asd.vdf',
293+
'b': 'language_*lol*',
294+
'c': 'zxc_-*.sss',
295+
}
296+
297+
self.assertEqual(vdf.loads(INPUT), EXPECTED)
298+
278299

279300
class testcase_VDF_other(unittest.TestCase):
280301
def test_dumps_pretty_output(self):

vdf/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,10 @@ def parse(fp, mapper=dict):
4646
stack = [mapper()]
4747
expect_bracket = False
4848

49-
re_keyvalue = re.compile(r'^("(?P<qkey>(?:\\.|[^\\"])+)"|(?P<key>[a-z0-9\-\_]+))'
49+
re_keyvalue = re.compile(r'^("(?P<qkey>(?:\\.|[^\\"])+)"|(?P<key>#?[a-z0-9\-\_]+))'
5050
r'([ \t]*('
5151
r'"(?P<qval>(?:\\.|[^\\"])*)(?P<vq_end>")?'
52-
r'|(?P<val>[a-z0-9\-\_]+)'
52+
r'|(?P<val>[a-z0-9\-\_\*\.]+)'
5353
r'))?',
5454
flags=re.I)
5555

0 commit comments

Comments
 (0)