diff --git a/parse_ranges/parse_ranges.py b/parse_ranges/parse_ranges.py index 402cffa..38661ef 100644 --- a/parse_ranges/parse_ranges.py +++ b/parse_ranges/parse_ranges.py @@ -16,4 +16,16 @@ def parse_ranges_v2(range_string): 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 diff --git a/parse_ranges/test_parse_ranges.py b/parse_ranges/test_parse_ranges.py index c5bac3c..96b65fc 100644 --- a/parse_ranges/test_parse_ranges.py +++ b/parse_ranges/test_parse_ranges.py @@ -24,7 +24,6 @@ class ParseRangesTests(unittest.TestCase): numbers = parse_ranges("100-1000000000000") self.assertEqual(next(numbers), 100) - @unittest.expectedFailure def test_with_individual_numbers(self): self.assertEqual( list(parse_ranges("0,4-8,20,43-45")), [0, 4, 5, 6, 7, 8, 20, 43, 44, 45]