From 247fe6f14f822d1e4cc8c36f5079fe30cf0a03f6 Mon Sep 17 00:00:00 2001 From: Reinhold Kainhofer <reinhold@kainhofer.com> Date: Thu, 15 Jul 2010 19:02:43 +0200 Subject: [PATCH] Repetitions: Use correct repeat count indicated by f+ after the ! --- pae2xml.pl | 12 +++++++++++- sample_files/Shortcuts-repetition.pae | 7 +++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 sample_files/Shortcuts-repetition.pae diff --git a/pae2xml.pl b/pae2xml.pl index 212fa61..c0ed699 100755 --- a/pae2xml.pl +++ b/pae2xml.pl @@ -154,6 +154,16 @@ REST: $rest\n"; close OUT; } +# Repeat $1 by a count of $2 +sub repeat { + (my $e, my $count) = @_; + my $res = ""; + for (my $i=1; $i <= $count; ++$i) + { + $res .= $e; + } + return $res; +} sub parse_notes { my ($notes, $keysig) = @_; @@ -166,7 +176,7 @@ sub parse_notes { $notes = $1; } - $notes =~ s/!([^!]*)!/$1$1/gs; # write out repetitions + $notes =~ s/!([^!]*)!(f*)/repeat($1, length($2)+1)/gse; # write out repetitions $notes =~ s/\{([^\}]*)\}/$1/gs; # ignore beamings while ( $notes =~ s/(:?\/+:?|^)([^\/:]*)(:?\/+:?)i(:?\/+:?)/$1$2$3$2$4/gs) {}; # replace whole-measure repeats (i notation) diff --git a/sample_files/Shortcuts-repetition.pae b/sample_files/Shortcuts-repetition.pae new file mode 100644 index 0000000..95577ab --- /dev/null +++ b/sample_files/Shortcuts-repetition.pae @@ -0,0 +1,7 @@ +Test Composer +Test case for repetitions +1.1.1: S repetitions +plain&easy: %C-1@c$bB� '4A!'6BG!fff4A/ + +Test Library +00000000 \ No newline at end of file -- GitLab