App-Music-ChordPro
view release on metacpan or search on metacpan
It can create songbooks from folders of songs.
!Other improvements
- Centered chords (top, bottom, below) are now evenly spread over multiple lines.
- (Wx) Remove ChordPro preset.
- (macos) Use _NSGetExecutablePath() to get the correct script location.
- Sync config files between git and MANIFEST.
- (Paths) Allow absolute filenames in findres.
- (Makefile) Add Ref::Util dependency.
- Progress reporting. Options ``progress_callabck and -I. Also
enabled with --verbose.
- New meta: page.class (first, title, default) and page.side (left, right).
- Distinct page clases for even pages; filler class for alignment pages.
- Add "omit" property for delegated images.
- Allow 'mi' as short for 'min' chord quality.
- Make properties parsing in directives more robust.
- (ChordPro) Include ABC if generating for MSPro.
- Allow %{} substitutions in grid sections.
- Add labelfont, labelsize and labelcolour directives.
"Image::Info" : "1.41",
"JSON::PP" : "2.27203",
"JSON::XS" : "4.03",
"JavaScript::QuickJS" : "0.18",
"LWP::Protocol::https" : "6.14",
"List::Util" : "1.46",
"Mozilla::CA" : "20230801",
"Object::Pad" : "0.78",
"PDF::API2" : "2.043",
"Pod::Usage" : "2.03",
"Ref::Util" : "0.204",
"Scalar::Util" : "1.63",
"Storable" : "3.08",
"String::Interpolate::Named" : "1.03",
"Text::Layout" : "0.038",
"perl" : "5.026"
}
},
"test" : {
"requires" : {
"JSON::PP" : "2.27203",
"Object::Pad" : "0.78",
"PDF::API2" : "2.043",
"Ref::Util" : "0.204",
"Scalar::Util" : "1.63",
"Storable" : "3.08",
"String::Interpolate::Named" : "1.01",
"Test::More" : "0"
}
}
},
"provides" : {
"App::Music::ChordPro" : {
"file" : "lib/ChordPro.pm",
---
abstract: 'A lyrics and chords formatting program'
author:
- 'Johan Vromans <jvromans@squirrel.nl>'
build_requires:
ExtUtils::MakeMaker: '0'
JSON::PP: '2.27203'
Object::Pad: '0.78'
PDF::API2: '2.043'
Ref::Util: '0.204'
Scalar::Util: '1.63'
Storable: '3.08'
String::Interpolate::Named: '1.01'
Test::More: '0'
configure_requires:
ExtUtils::MakeMaker: '7.24'
dynamic_config: 1
generated_by: 'ExtUtils::MakeMaker version 7.70, CPAN::Meta::Converter version 2.150010'
license: perl
meta-spec:
Image::Info: '1.41'
JSON::PP: '2.27203'
JSON::XS: '4.03'
JavaScript::QuickJS: '0.18'
LWP::Protocol::https: '6.14'
List::Util: '1.46'
Mozilla::CA: '20230801'
Object::Pad: '0.78'
PDF::API2: '2.043'
Pod::Usage: '2.03'
Ref::Util: '0.204'
Scalar::Util: '1.63'
Storable: '3.08'
String::Interpolate::Named: '1.03'
Text::Layout: '0.038'
perl: '5.026'
resources:
bugtracker: https://github.com/ChordPro/chordpro/issues
homepage: https://chordpro.org
license: https://dev.perl.org/licenses/
repository: git://github.com/ChordPro/chordpro.git
Makefile.PL view on Meta::CPAN
'LWP::Protocol::https' => 6.14,
'Mozilla::CA' => 20230801,
'File::HomeDir' => 1.004,
'Image::Info' => 1.41,
'List::Util' => 1.46,
'Data::Printer' => 1.001001,
'Storable' => 3.08,
'Object::Pad' => 0.78,
'JavaScript::QuickJS' => 0.18,
'Ref::Util' => 0.204,
'Scalar::Util' => 1.63,
# Core
'Pod::Usage' => 2.03,
'File::Copy' => 2.32,
# These are only used by the LaTeX backend
# 'Template' => 3.010,
# 'LaTeX::Encode' => 0.092.0,
},
Makefile.PL view on Meta::CPAN
# BUILD_REQUIRES => {
# },
TEST_REQUIRES => {
'Test::More' => 0,
'JSON::PP' => 2.27203,
# 'SVGPDF' => 0.089,
'String::Interpolate::Named' => 1.01,
'Storable' => 3.08,
'Object::Pad' => 0.78,
'Ref::Util' => 0.204,
'Scalar::Util' => 1.63,
@pdfapi,
},
META_MERGE => {
'meta-spec' => { version => 2, },
resources => {
license => [ "https://dev.perl.org/licenses/" ],
homepage => 'https://chordpro.org',
repository => {
lib/ChordPro/Config.pm view on Meta::CPAN
use ChordPro;
use ChordPro::Paths;
use ChordPro::Utils;
use File::LoadLines;
use File::Spec;
use Scalar::Util qw(reftype);
use List::Util qw(any);
use Storable 'dclone';
use Hash::Util;
use Ref::Util qw( is_arrayref is_hashref );
#sub hmerge($$;$);
#sub clone($);
#sub default_config();
sub new ( $pkg, $cf = {} ) {
bless $cf => $pkg;
}
sub pristine_config {
lib/ChordPro/Output/ChordPro.pm view on Meta::CPAN
package ChordPro::Output::ChordPro;
use v5.26;
use utf8;
use Carp;
use feature qw( signatures );
no warnings "experimental::signatures";
use ChordPro::Output::Common;
use ChordPro::Utils qw( fq qquote demarkup is_true is_ttrue );
use Ref::Util qw( is_arrayref );
my $re_meta;
sub generate_songbook ( $self, $sb ) {
# Skip empty songbooks.
return [] unless eval { $sb->{songs}->[0]->{body} };
# Build regex for the known metadata items.
$re_meta = join( '|',
lib/ChordPro/Output/PDF.pm view on Meta::CPAN
our $ps;
package ChordPro::Output::PDF;
use strict;
use warnings;
use Encode qw( encode_utf8 );
use File::Temp ();
use Storable qw(dclone);
use List::Util qw(any);
use Ref::Util qw(is_hashref is_arrayref is_coderef);
use Carp;
use feature 'state';
use File::LoadLines qw(loadlines loadblob);
use ChordPro::Output::Common
qw( roman prep_outlines fmt_subst );
use feature 'signatures';
use ChordPro::Output::PDF::Writer;
use ChordPro::Paths;
use ChordPro::Utils;
lib/ChordPro/Output/PDF/Writer.pm view on Meta::CPAN
use Encode;
use Text::Layout;
use IO::String;
use Carp;
use utf8;
use ChordPro::Paths;
use ChordPro::Utils qw( expand_tilde demarkup min is_corefont );
use ChordPro::Output::Common qw( fmt_subst prep_outlines );
use File::LoadLines qw(loadlines);
use Ref::Util qw( is_hashref );
# For regression testing, run perl with PERL_HASH_SEED set to zero.
# This eliminates the arbitrary order of font definitions and triggers
# us to pinpoint some other data that would otherwise be varying.
my $regtest = defined($ENV{PERL_HASH_SEED}) && $ENV{PERL_HASH_SEED} == 0;
my $faketime = 1465041600;
my %fontcache; # speeds up 2 seconds per song
sub new {
lib/ChordPro/Songbook.pm view on Meta::CPAN
use ChordPro;
use ChordPro::Config;
use ChordPro::Song;
use ChordPro::Utils qw(progress);
use Carp;
use List::Util qw(any);
use File::LoadLines;
use Storable qw(dclone);
use Ref::Util qw(is_arrayref is_plain_hashref);
sub new {
my ($pkg) = @_;
bless { songs => [ ] }, $pkg;
}
sub parse_file {
my ( $self, $filename, $opts ) = @_;
$opts //= {};
my $meta = { %{$config->{meta}}, %{delete $opts->{meta}//{}} };
lib/ChordPro/Utils.pm view on Meta::CPAN
#! perl
package ChordPro::Utils;
use v5.26;
use utf8;
use Carp;
use feature qw( signatures );
no warnings "experimental::signatures";
use Ref::Util qw(is_arrayref);
use Exporter 'import';
our @EXPORT;
our @EXPORT_OK;
################ Platforms ################
use constant MSWIN => $^O =~ /MSWin|Windows_NT/i ? 1 : 0;
sub is_msw () { MSWIN }
lib/ChordPro/Utils.pm view on Meta::CPAN
);
sub is_corefont {
$corefonts{lc $_[0]};
}
push( @EXPORT, "is_corefont" );
# Progress reporting.
use Ref::Util qw(is_coderef);
# Progress can return a false result to allow caller to stop.
sub progress(%args) {
state $callback;
state $phase = "";
state $index = 0;
state $total = '';
unless ( %args ) { # reset
undef $callback;
lib/ChordPro/Wx/Config.pm view on Meta::CPAN
use v5.26;
use Object::Pad;
use open ':std', IO => ':encoding(UTF-8)';
class ChordPro::Wx::Config;
our %state;
our %preferences;
use ChordPro::Utils qw( is_macos );
use Ref::Util qw( is_hashref is_arrayref );
use Exporter 'import';
our @EXPORT = qw( %state %preferences );
my $cb;
use Wx qw(:everything);
use Wx::Locale gettext => '_T';
use ChordPro::Paths;
use Encode qw( decode_utf8 );
( run in 0.646 second using v1.01-cache-2.11-cpan-a5abf4f5562 )