add a flatten implementation

This commit is contained in:
Jakob Ketterl 2023-05-06 00:20:37 +02:00
parent 3b04688d1f
commit 701f39f836
2 changed files with 17 additions and 0 deletions

View file

@ -130,6 +130,11 @@ class ActiveList:
self.addListener(ActiveListFilterListener(filter, keyMap, res))
return res
def flatten(self):
res = ActiveList([y for x in self for y in x])
# TODO handle events
return res
def __setitem__(self, key, value):
if self.delegate[key] == value:
return
@ -150,3 +155,6 @@ class ActiveList:
def __iter__(self):
return self.delegate.__iter__()
def __list__(self):
return [x for x in self.delegate]

View file

@ -173,3 +173,12 @@ class ActiveListTest(TestCase):
filteredList = list.filter(lambda x: x < 3)
del list[1]
self.assertEqual(len(filteredList), 1)
def testFlatten(self):
list = ActiveList([[1, 2], [3, 4]])
flattenedList = list.flatten()
self.assertEqual(len(flattenedList), 4)
self.assertEqual(flattenedList[0], 1)
self.assertEqual(flattenedList[1], 2)
self.assertEqual(flattenedList[2], 3)
self.assertEqual(flattenedList[3], 4)