App-Music-ChordPro
view release on metacpan or search on metacpan
lib/ChordPro/Output/Common.pm view on Meta::CPAN
package ChordPro::Output::Common;
use strict;
use warnings;
use feature qw( state );
use ChordPro::Chords;
use ChordPro::Utils qw( demarkup is_true plural );
use String::Interpolate::Named;
use utf8;
use POSIX qw(setlocale LC_TIME strftime);
use Ref::Util qw( is_arrayref );
use File::LoadLines ();
use Encode qw( encode_utf8 );
use Exporter 'import';
our @EXPORT;
our @EXPORT_OK;
sub fmt_subst {
my ( $s, $t ) = @_;
lib/ChordPro/Output/Common.pm view on Meta::CPAN
$m->{instrument} = [ $config->{instrument}->{type} ];
$m->{"instrument.type"} = [ $config->{instrument}->{type} ];
$m->{"instrument.description"} = [ $config->{instrument}->{description} ];
}
# Same here.
if ( $config->{user} ) {
$m->{user} = [ $config->{user}->{name} ];
$m->{"user.name"} = [ $config->{user}->{name} ];
$m->{"user.fullname"} = [ $config->{user}->{fullname} ];
}
setlocale( LC_TIME, "" );
$m->{today} //= strftime( $config->{dates}->{today}->{format},
localtime(time) );
$m->{chordpro} = "ChordPro";
$m->{"chordpro.version"} = $ChordPro::VERSION;
for ( keys %{ $config->{settings} } ) {
my $v = $config->{settings}->{$_};
$v = '' if $v =~ /^(0|false|off)$/i;
$v = 1 if $v=~ /^(true|on)$/i;
$m->{"settings.$_"} = $v;
}
lib/ChordPro/Output/PDF.pm view on Meta::CPAN
my $r = "\$$bb"."->[0]";
my $proc = 'sub { my $tbs = shift; ';
$proc .= '[ map { $_->[1] } sort { ';
$proc .= "\$collator->cmp( $l, $r )";
$proc .= ' } @$tbs ] }';
my $sorter = eval $proc;
die("OOPS $proc\n$@") if $@;
$sb->{songs} = $sorter->(\@tbs);
}
else {
my $proc = 'sub { my $tbs = shift; use locale; ';
$proc .= '[ map { $_->[1] } sort { ';
$proc .= $desc ? '$b->[0] cmp $a->[0]' : '$a->[0] cmp $b->[0]';
$proc .= ' } @$tbs ] }';
my $sorter = eval $proc;
die("OOPS $proc\n$@") if $@;
$sb->{songs} = $sorter->(\@tbs);
}
}
sub compact_songbook {
( run in 2.455 seconds using v1.01-cache-2.11-cpan-ceb78f64989 )