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 )