#!/usr/bin/perl -w -s use strict; use utf8::all; use lyra; our ($dir,$ps, $a4, $a3, $a5,$book,$ag,$b5,$sort,$nocolor,$ls,$minipage); $book //= 1; $dir ||= "."; my $list=shift or die("$0 [options] file.list\n"); my $name=$list; $name =~ s/\.li?st$//; my $opt= {outputfile => "_$name.tex", pageformat => "agenda", column => 1, minipage => 1, color => 1, dir => $dir, column => 1}; $opt->{color}=0 if $nocolor; $opt->{ls}=$ls if $ls; $opt->{ls}=~ s/(\d$)/$1pt/ if $ls; my %abr = (title => "tit", author => "aut"); my @fs = (map {chomp; $_} `cat $list`); my @fsf=(); my %oco=(); for(@fs) { next if(/^#/); if(/^\s*(\w+)\s*=>?\s*(.*)/) {$opt->{$abr{$1} || $1} = $2 } elsif(/^!(.*)/){ print "DEBUG '$1' em '$opt->{dir}'\n"; for( `LANG=C grep -P -i -w -l '$1' $opt->{dir}/*.lyr`) { chomp; print "DEBUG... $_\n"; push(@fsf,$_) unless $oco{$_}++; } } elsif(/\w/){ push(@fsf,$_) unless $oco{$_}++ } } @fsf = lyra::songsort($opt,@fsf) if ( $sort || $opt->{'sort'}); if($ag) { $opt->{pageformat} = "agenda"; $opt->{column} = 1; $opt->{abc}=1; $opt->{newpage}='\newpage'; } if($b5) { $opt->{pageformat} = "b5"; $opt->{column} = 2 } if($a4) { $opt->{pageformat} = "a4"; $opt->{column} = 2; $opt->{abc}=2 } if($a3) { $opt->{pageformat} = "a4"; $opt->{column} = 2; $opt->{abc}=2 } lyra::mksongbook($opt,@fsf); if($book){ if($ps){ if ( $opt->{pageformat} eq "agenda"){ lyra::make("_$name.agps") } elsif( $opt->{pageformat} eq "b5") { lyra::make("_$name.a5ps") } elsif( $opt->{pageformat} eq "a5") { lyra::make("_$name.a5ps") } else { lyra::make("_$name.ps") } } else{ if ( $opt->{pageformat} eq "agenda"){ lyra::make("_$name.agpdf") } elsif( $opt->{pageformat} eq "b5" ){ lyra::make("_$name.a5pdf") } elsif( $opt->{pageformat} eq "a5" ){ lyra::make("_$name.a5pdf") } else { lyra::make("_$name.pdf") } } } __END__ =head1 NAME mksongbook - makes a songbook from a list a .lyr files =head1 SYNOPSIS mksongbook f.list =head1 DESCRIPTION =head2 f.list format title option1=value1 option2=value2 ... file1.lyr file2.lyr !pattern ... Where options can be: outputfile = _1.tex (default STDOUT) pageformat = agenda|a4|a5|b5|a3 (default a4) column = 1 (default 1) newpage = (default \newpage) abc = 2 color = 0 maketitle = 1 nostart = 0 index = 1 dir=/home/jj/music ...very important for patterns =head2 Example tit=Cancioneiro AMPP author=AMPP date=Dezembro 2006 newpage= pageformat=a4 sort=1 column=2 abc=2 dir=/home/jj/music /home/jj/musicvs/musica/trovante-125azul.lyr /home/jj/musicvs/musica/godinho-2andarDireito.lyr /home/jj/musicvs/musica/godinho-sobreviventes02.lyr /home/jj/musicvs/musica/fausto-flober.lyr /home/jj/musicvs/musica/gaiteiros-agoraQueEuVouCantar.lyr !Natal =head1 AUTHOR J.Joao Almeida, jj@di.uminho.pt =head1 SEE ALSO perl(1). =cut