musicxml-0.1: script/haskellpp.pl
#####################################################################
# This scripts process Literate Haskell Script itself to be process
# by lhs2TeX with haddock comments.
#
use strict;
use warnings;
my @tag=();
while (<>) {
if ($_ =~ /\\begin{(.*)}/) {push @tag => $1;}
if ( elem("code",@tag) and /(.*)--(.*)/) {
print $1 => '--' =>
# "\\begin{verbatim}" => $2 => "\\end{verbatim}" => "\n";
process($2) => "\n";
}
elsif (elem("nocode",@tag)) {;}
else {
print;
}
if ($_ =~ /\\end{(.*)}/ and $1 eq $tag[@tag-1]) {pop @tag;}
}
#####################################################################
#######################################
sub process{
my ($input) = @_;
$input =~ s/\\/\$\\backslash\$/g;
$input =~ s/\|/\|\|/g;
$input =~ s/\@/\@\@/g;
$input =~ s/\^//g;
$input =~ s/\"/\'/g;
$input =~ s/_/\\_/g;
return $input;
}
#######################################
sub elem {
my ($x,@xs) = @_;
my $res = 0;
for (@xs) {$res=1 if $x eq $_}
return $res;
}