From 378c9636f415696485e2fb173c99f8e47ba402e0 Mon Sep 17 00:00:00 2001 From: Cacahuete Date: Mon, 21 Dec 2020 23:24:17 +0100 Subject: [PATCH] parse_ranges: support for single digits, Bonus2. --- parse_ranges/parse_ranges.py | 14 +++++++++++++- parse_ranges/test_parse_ranges.py | 1 - 2 files changed, 13 insertions(+), 2 deletions(-) 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]