parse_ranges: support for single digits, Bonus2.

This commit is contained in:
Cacahuete 2020-12-21 23:24:17 +01:00
parent b1e27e7699
commit 378c9636f4
2 changed files with 13 additions and 2 deletions

View file

@ -16,4 +16,16 @@ def parse_ranges_v2(range_string):
yield number yield number
parse_ranges = parse_ranges_v2 def parse_ranges_v3(range_string):
"""This version handles single digits, Bonus2."""
ranges = [tuple(map(int, r.split("-"))) for r in range_string.split(",")]
for limits in ranges:
if len(limits) == 1:
yield limits[0]
else:
start, stop = limits
for number in range(start, stop + 1):
yield number
parse_ranges = parse_ranges_v3

View file

@ -24,7 +24,6 @@ class ParseRangesTests(unittest.TestCase):
numbers = parse_ranges("100-1000000000000") numbers = parse_ranges("100-1000000000000")
self.assertEqual(next(numbers), 100) self.assertEqual(next(numbers), 100)
@unittest.expectedFailure
def test_with_individual_numbers(self): def test_with_individual_numbers(self):
self.assertEqual( self.assertEqual(
list(parse_ranges("0,4-8,20,43-45")), [0, 4, 5, 6, 7, 8, 20, 43, 44, 45] list(parse_ranges("0,4-8,20,43-45")), [0, 4, 5, 6, 7, 8, 20, 43, 44, 45]