From 9e37bd366f717fe28852e600a2e77c8168dfc7e4 Mon Sep 17 00:00:00 2001 From: Miika Alonen Date: Sun, 26 Feb 2023 22:32:50 +0200 Subject: [PATCH] Fixed Subdivision in normal repeats --- tests/test_parser.py | 15 +++++++++++++++ ziffers/classes.py | 3 +++ 2 files changed, 18 insertions(+) diff --git a/tests/test_parser.py b/tests/test_parser.py index 01b1a65..40eb8dd 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -91,6 +91,21 @@ def test_subdivisions(pattern: str, expected: list): def test_repeats(pattern: str, expected: list): assert collect(zparse(pattern),len(expected)*2,"note") == expected*2 +@pytest.mark.parametrize( + "pattern,expected", + [ + ("[: 3 [2 4] :]", [0.25, 0.125, 0.125, 0.25, 0.125, 0.125]), + ("[: 1 [2 [5 6]] 3 [2 4] :]", [0.25, 0.125, 0.0625, 0.0625, 0.25, 0.125, 0.125, 0.25, 0.125, 0.0625, 0.0625, 0.25, 0.125, 0.125]), + ("(: 3 [2 4] :)", [0.25, 0.125, 0.125, 0.25, 0.125, 0.125]), + ("(: 1 [2 [5 6]] 3 [2 4] :)", [0.25, 0.125, 0.0625, 0.0625, 0.25, 0.125, 0.125, 0.25, 0.125, 0.0625, 0.0625, 0.25, 0.125, 0.125]), + ("(3 [2 4]):2", [0.25, 0.125, 0.125, 0.25, 0.125, 0.125]), + ("(1 [2 [5 6]] 3 [2 4]):2", [0.25, 0.125, 0.0625, 0.0625, 0.25, 0.125, 0.125, 0.25, 0.125, 0.0625, 0.0625, 0.25, 0.125, 0.125]), + + ] +) +def test_repeat_durations(pattern: str, expected: list): + assert collect(zparse(pattern),len(expected)*2,"duration") == expected*2 + @pytest.mark.parametrize( "pattern,expected", [ diff --git a/ziffers/classes.py b/ziffers/classes.py index 5dc399b..2f6420b 100644 --- a/ziffers/classes.py +++ b/ziffers/classes.py @@ -1097,6 +1097,9 @@ class RepeatedSequence(Sequence): yield from item.evaluate_tree(self.local_options, True) elif isinstance(item, RepeatedSequence): yield item + elif isinstance(item, Subdivision): + item.evaluate_values(options) + yield item else: yield from item elif isinstance(item, Cyclic):