App-Music-ChordPro

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

      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.

META.json  view on Meta::CPAN

            "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",

META.yml  view on Meta::CPAN

---
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:

META.yml  view on Meta::CPAN

  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.294 second using v1.01-cache-2.11-cpan-a5abf4f5562 )