Added get_list_item utlity method to ParseDict.
This commit is contained in:
parent
ec57688c8e
commit
16a1f6efec
|
@ -148,6 +148,21 @@ class ParseDict(dict):
|
|||
key, default or [], None, parse_util.parse_list,
|
||||
{'separator': separator})
|
||||
|
||||
def get_list_item(self, key, index=0, default=None, separator=','):
|
||||
"""
|
||||
Get list by key or keypath and return value at the specified index.
|
||||
If separator is specified and list value is a string it will be splitted.
|
||||
"""
|
||||
values = self.get_list(key, None, separator)
|
||||
if values:
|
||||
try:
|
||||
value = values[index]
|
||||
return value
|
||||
except IndexError:
|
||||
return default
|
||||
else:
|
||||
return default
|
||||
|
||||
def get_slug(self, key, default='', options=None):
|
||||
"""
|
||||
Get value by key or keypath trying to return it as slug.
|
||||
|
|
|
@ -124,6 +124,19 @@ class BenedictTestCase(unittest.TestCase):
|
|||
self.assertTrue(isinstance(b.get_dict('a'), benedict))
|
||||
self.assertEqual(b.get('a.x'), 1)
|
||||
|
||||
def test_get_list_item(self):
|
||||
d = {
|
||||
'a': {
|
||||
'b': {
|
||||
'c': 1,
|
||||
}
|
||||
},
|
||||
}
|
||||
b = benedict(d)
|
||||
self.assertTrue(isinstance(b.get_dict('a'), benedict))
|
||||
self.assertTrue(isinstance(b.get_dict('a.b'), benedict))
|
||||
self.assertEqual(b.get('a.b.c'), 1)
|
||||
|
||||
def test_get(self):
|
||||
d = {
|
||||
'a': 1,
|
||||
|
|
|
@ -300,6 +300,23 @@ class ParseDictTestCase(unittest.TestCase):
|
|||
self.assertEqual(b.get_list('d', separator=','), [])
|
||||
self.assertEqual(b.get_list('e', [0], separator=','), [0])
|
||||
|
||||
def test_get_list_item(self):
|
||||
d = {
|
||||
'a': (1, 2, 3, 4, 5, ),
|
||||
'b': [6, 7, 8, 9, 0],
|
||||
'c': {},
|
||||
}
|
||||
b = ParseDict(d)
|
||||
self.assertEqual(b.get_list_item('a'), 1)
|
||||
self.assertEqual(b.get_list_item('a', index=1), 2)
|
||||
self.assertEqual(b.get_list_item('a', index=-1), 5)
|
||||
self.assertEqual(b.get_list_item('a', index=10), None)
|
||||
self.assertEqual(b.get_list_item('b'), 6)
|
||||
self.assertEqual(b.get_list_item('b', index=1), 7)
|
||||
self.assertEqual(b.get_list_item('b', index=-1), 0)
|
||||
self.assertEqual(b.get_list_item('b', index=10), None)
|
||||
self.assertEqual(b.get_list_item('c', index=1), None)
|
||||
|
||||
def test_get_slug(self):
|
||||
d = {
|
||||
'a': ' Hello World ',
|
||||
|
|
Loading…
Reference in New Issue