diff --git a/mmgen/addrlist.py b/mmgen/addrlist.py index 80604a66..8446cc31 100755 --- a/mmgen/addrlist.py +++ b/mmgen/addrlist.py @@ -35,15 +35,15 @@ class AddrIdxList(tuple, InitErrors, MMGenObject): if fmt_str: def gen(): for i in (fmt_str.split(sep)): - j = [int(x) for x in i.split('-')] - if len(j) == 1: - yield j[0] - elif len(j) == 2: - if j[0] > j[1]: + match [int(x) for x in i.split('-')]: + case [a]: + yield a + case [a, b]: + if a > b: + raise ValueError(f'{i}: invalid range') + yield from range(a, b + 1) + case _: raise ValueError(f'{i}: invalid range') - yield from range(j[0], j[1] + 1) - else: - raise ValueError(f'{i}: invalid range') idx_list = tuple(gen()) return tuple.__new__(cls, sorted({AddrIdx(i) for i in (idx_list or [])})) except Exception as e: