Skip to content

Commit cf46129

Browse files
committed
Fixed get_int_list with single value.
1 parent 0157597 commit cf46129

File tree

3 files changed

+27
-11
lines changed

3 files changed

+27
-11
lines changed

benedict/dicts/parse/parse_util.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -143,15 +143,18 @@ def parse_int(val):
143143

144144

145145
def _parse_list(val, separator=None):
146-
serializer = JSONSerializer()
147-
try:
148-
l = serializer.decode(val)
149-
if type_util.is_list(l):
150-
return l
151-
except Exception:
152-
if separator:
153-
l = list(val.split(separator))
154-
return l
146+
if val.startswith('{') and val.endswith('}') or val.startswith('[') and val.endswith(']'):
147+
try:
148+
serializer = JSONSerializer()
149+
l = serializer.decode(val)
150+
if type_util.is_list(l):
151+
return l
152+
return None
153+
except Exception:
154+
pass
155+
if separator:
156+
l = list(val.split(separator))
157+
return l
155158
return None
156159

157160

tests/dicts/parse/test_parse_dict.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,10 +320,18 @@ def test_get_int_list(self):
320320
d = {
321321
'a': ['0', '1', '2', 'Hello World'],
322322
'b': '0,1,2',
323+
'c': '0',
324+
'd': '1',
325+
'e': '',
326+
'f': None,
323327
}
324328
b = ParseDict(d)
325329
self.assertEqual(b.get_int_list('a'), [0, 1, 2, None])
326330
self.assertEqual(b.get_int_list('b'), [0, 1, 2])
331+
self.assertEqual(b.get_int_list('c'), [0])
332+
self.assertEqual(b.get_int_list('d'), [1])
333+
self.assertEqual(b.get_int_list('e'), [])
334+
self.assertEqual(b.get_int_list('f'), [])
327335

328336
def test_get_list(self):
329337
d = {

tests/dicts/parse/test_parse_util.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,13 @@ def test_parse_int(self):
5454
pass
5555

5656
def test_parse_list(self):
57-
# TODO
58-
pass
57+
f = lambda value: parse_util.parse_list(value, separator=',')
58+
self.assertEqual(f(['0', '1', '2', 'Hello World']), ['0', '1', '2', 'Hello World'])
59+
self.assertEqual(f('0,1,2'), ['0', '1', '2'])
60+
self.assertEqual(f('0'), ['0'])
61+
self.assertEqual(f('1'), ['1'])
62+
self.assertEqual(f(''), None)
63+
self.assertEqual(f(None), None)
5964

6065
def test_parse_phonenumber(self):
6166
# TODO

0 commit comments

Comments
 (0)