From bd658412dd4c70ede379535e37959c19823bd4a0 Mon Sep 17 00:00:00 2001
From: Reinhold Kainhofer <reinhold@kainhofer.com>
Date: Thu, 15 Jul 2010 19:13:44 +0200
Subject: [PATCH] Support for real multi-measure rests (with correct length
 explicitly specified in XML)

---
 pae2xml.pl                          | 16 ++++++++++++----
 sample_files/Rests-multimeasure.pae |  7 +++++++
 2 files changed, 19 insertions(+), 4 deletions(-)
 create mode 100644 sample_files/Rests-multimeasure.pae

diff --git a/pae2xml.pl b/pae2xml.pl
index c0ed699..060d1ab 100755
--- a/pae2xml.pl
+++ b/pae2xml.pl
@@ -193,8 +193,6 @@ sub parse_notes {
   $notes =~ s/(\.|\d|\,|\')qq/qq$1/gs; # pull beginning mark of group of grace notes in front of corresponding notes
   $notes =~ s/(xx|x|bb|b|n)qq/qq$1/gs;  # qq first, then parts of notes
 
-  $notes =~ s/\=(\d)/$1/gs; # replace multibar rests #n with just n
-
   while ($notes ne "") {
     if ($notes =~ /^(\'+|\,+)(.*)$/) {  # Octave marks
       ($oct, $notes) = ($1, $2);
@@ -205,13 +203,23 @@ sub parse_notes {
     } elsif ($notes =~ /^r(.*)$/) {  # End grace
       $notes = $1;
       $qq = 0;
-    } elsif ($notes =~ /^(\d+|\=)(\/.*)$/) {  # normal and multi-measure rests
+    } elsif ($notes =~ /^\=(\d*)(\/.*)$/) {  # multi-measure rests
       $measrest = $1;
       $notes = $2;
-      if ($measrest eq '=') {
+      if ($measrest eq '') {
 	$measrest = 1;
       }
       $toprint .= "$measrest measures of rest.\n";
+      if ($measrest > 0) {
+        # Create a real multi-bar rest
+        print OUT '			<attributes>
+				<measure-style>
+					<multiple-rest>'.$measrest.'</multiple-rest>
+				</measure-style>
+			</attributes>
+';
+      }
+      # Now create the measures
       for $n (1..$measrest) {
 	print OUT '			<note>
 				<rest />
diff --git a/sample_files/Rests-multimeasure.pae b/sample_files/Rests-multimeasure.pae
new file mode 100644
index 0000000..f0c01ad
--- /dev/null
+++ b/sample_files/Rests-multimeasure.pae
@@ -0,0 +1,7 @@
+Test Composer
+Test case for multi-measure rests
+1.1.1: S Multi-measure rests
+plain&easy: %C-1@c$bB� '=/2AB/=3/=/2AB/=15/2AB/
+
+Test Library
+00000000
\ No newline at end of file
-- 
GitLab