5 detect \lyrics and \melodic, and do substitution accordingly.
13 # version of "supporting" engine, not mudela conversions.
19 $convert_mudela_version = "0.1.1";
28 my(@a)= split /\./,$a;
29 my(@b)= split /\./,$b;
32 return $a[$i] <=> $b[$i] if ($a[$i] != $b[$i]);
37 sub version_string_conv
39 my ($from_version, $to_version) = @_;
40 s/\version \"$from_version\"/\version \"$to_version\"/g;
43 ################################################################
49 sub convert_0_0_52_to_0_0_53
52 s/include \"/$1\\include \"/g;
56 sub convert_0_0_54_to_0_0_55
62 sub convert_0_0_53_to_0_0_54
64 print STDERR "Not smart enough to convert \\transpose\n" if (/\\transpose/) ;
67 # we-re not at 58 yet, but this is at least one of the rules
68 sub convert_0_0_55_to_0_0_56
73 sub convert_0_0_56_to_0_0_57
75 s/\(([ \]\[|\t-\.>]|\\[<!>a-z]+)*\)/\~ $1/g;
78 sub convert_0_0_57_to_0_0_58
80 s/\[ *([^\[\]]*)\] *([1-9]*) *\/ *([1-9]*)/[$2\/$3 $1]1\/1/g;
83 sub convert_0_0_58_to_0_0_58
85 die "Not smart enough to convert 0.0.58 to 0.0.59\n";
87 ###############################################################
97 print STDERR "This is convert-mudela " . $convert_mudela_version .
98 " (up to mudela version ", last_conversion, ")\n";
104 print STDERR "Usage: convert-mudela [options] [mudela-file]...\n"
105 . "Convert old mudela source from mudela-file or stdin\n\n"
107 . " -e, --edit perform in-place conversion\n"
108 . " -f, --from=PATHLEVEL use source version 0.0.PATCHLEVEL\n"
109 . " -h, --help print this help\n"
110 . " -o, --output=FILE name output file\n"
111 . " -s, --show-rules print all known conversion rules\n"
112 . " -t, --to=VERSION convert to version VERSION\n"
116 my %minor_conversions = ("0.0.50" => \&no_conv,
117 "0.0.52" => \&convert_0_0_50_to_0_0_52,
118 "0.0.53" => \&convert_0_0_52_to_0_0_53,
119 "0.0.54" => \&convert_0_0_53_to_0_0_54,
120 "0.0.55" => \&convert_0_0_54_to_0_0_55,
121 "0.0.56" => \&convert_0_0_55_to_0_0_56,
122 "0.0.57" => \&convert_0_0_56_to_0_0_57,
123 "0.0.58" => \&convert_0_0_57_to_0_0_58,
124 "0.0.59" => \&convert_0_0_58_to_0_0_59
130 return (sort keys %minor_conversions);
136 print "Rules: ", join(", ", sort keys %minor_conversions), "\n";
144 my @applicable_conversion;
147 die "This is too old to convert " if $from < 50;
150 if ($a > $from && $a <= $to ){
151 push @applicable_conversion, $minor_conversions{$a};
152 push @mudela_levels, $a;
156 print STDERR "Applying following rules: ", join(", ", @mudela_levels) , "\n";
159 foreach $subroutine (@applicable_conversion) {
164 version_string_conv $from, $to;
173 open INLY, $fn || die "Can't open";
176 s/^.*\\version \"([^\"]*)\".*$//;
178 print STDERR "Guessing version: ", $1, ".. ";
184 print STDERR "can't determine mudela version in $fn.\n";
196 $outfile = $opt_output if (defined($opt_output));
201 if (( ! -f $infile) && (! $infile =~ /\\.ly$/s ) ){
206 if ($opt_edit && $infile ne "-") {
208 $outfile = "$infile.NEW";
211 print STDERR "Input ", (($infile eq "-") ?"STDIN" : $infile), " .. ";
219 local ($from_version, $to_version);
220 $from_version = $opt_from;
221 $to_version = $opt_to;
223 ($from_version = get_auto_from $infile) unless defined($opt_from);
224 return if (!defined($from_version));
226 ($to_version = last_conversion) unless (defined($opt_to));
229 die "can't open \`$infile\'" unless open INLY,$infile ;
230 die "can't open \`$outfile\'" unless open OUTLY, ">$outfile";
232 do_conversion $from_version, $to_version;
237 rename $infile, "$infile~";
238 rename $outfile, "$infile";
246 GetOptions ("help", "output=s", "from=i", "to=i", "minor=i", "edit", "show-rules");
250 $opt_help = 0; # to extinguish typo check.
254 if ($opt_show_rules) {
256 $opt_show_rules = 0; # to extinguish typo check.
260 local ( $infile,$outfile);
263 while (defined($ARGV[0])) {
268 do_one_arg unless ($processed_one);