App-Music-ChordPro
view release on metacpan or search on metacpan
"prereqs" : {
"build" : {
"requires" : {
"Data::Printer" : "1.001001",
"File::Copy" : "2.32",
"File::HomeDir" : "1.004",
"File::LoadLines" : "1.047",
"HarfBuzz::Shaper" : "0.026",
"IPC::Run3" : "0.049",
"Image::Info" : "1.41",
"JSON::XS" : "4.03",
"JavaScript::QuickJS" : "0.18",
"LWP::Protocol::https" : "6.14",
"List::Util" : "1.46",
"Mozilla::CA" : "20230801",
"Object::Pad" : "0.818",
"PDF::API2" : "2.045",
"Pod::Usage" : "2.03",
"Ref::Util" : "0.204",
"Scalar::Util" : "1.63",
"Storable" : "3.08",
},
"runtime" : {
"requires" : {
"Data::Printer" : "1.001001",
"File::Copy" : "2.32",
"File::HomeDir" : "1.004",
"File::LoadLines" : "1.047",
"HarfBuzz::Shaper" : "0.026",
"IPC::Run3" : "0.049",
"Image::Info" : "1.41",
"JSON::XS" : "4.03",
"JavaScript::QuickJS" : "0.18",
"LWP::Protocol::https" : "6.14",
"List::Util" : "1.46",
"Mozilla::CA" : "20230801",
"Object::Pad" : "0.818",
"PDF::API2" : "2.045",
"Pod::Usage" : "2.03",
"Ref::Util" : "0.204",
"Scalar::Util" : "1.63",
"Storable" : "3.08",
},
"test" : {
"requires" : {
"Data::Printer" : "1.001001",
"File::Copy" : "2.32",
"File::HomeDir" : "1.004",
"File::LoadLines" : "1.047",
"HarfBuzz::Shaper" : "0.026",
"IPC::Run3" : "0.049",
"Image::Info" : "1.41",
"JSON::XS" : "4.03",
"JavaScript::QuickJS" : "0.18",
"LWP::Protocol::https" : "6.14",
"List::Util" : "1.46",
"Mozilla::CA" : "20230801",
"Object::Pad" : "0.818",
"PDF::API2" : "2.045",
"Pod::Usage" : "2.03",
"Ref::Util" : "0.204",
"Scalar::Util" : "1.63",
"Storable" : "3.08",
author:
- 'Johan Vromans <jvromans@squirrel.nl>'
build_requires:
Data::Printer: '1.001001'
File::Copy: '2.32'
File::HomeDir: '1.004'
File::LoadLines: '1.047'
HarfBuzz::Shaper: '0.026'
IPC::Run3: '0.049'
Image::Info: '1.41'
JSON::XS: '4.03'
JavaScript::QuickJS: '0.18'
LWP::Protocol::https: '6.14'
List::Util: '1.46'
Mozilla::CA: '20230801'
Object::Pad: '0.818'
PDF::API2: '2.045'
Pod::Usage: '2.03'
Ref::Util: '0.204'
Scalar::Util: '1.63'
Storable: '3.08'
file: script/chordpro
version: v6.101.0
requires:
Data::Printer: '1.001001'
File::Copy: '2.32'
File::HomeDir: '1.004'
File::LoadLines: '1.047'
HarfBuzz::Shaper: '0.026'
IPC::Run3: '0.049'
Image::Info: '1.41'
JSON::XS: '4.03'
JavaScript::QuickJS: '0.18'
LWP::Protocol::https: '6.14'
List::Util: '1.46'
Mozilla::CA: '20230801'
Object::Pad: '0.818'
PDF::API2: '2.045'
Pod::Usage: '2.03'
Ref::Util: '0.204'
Scalar::Util: '1.63'
Storable: '3.08'
Makefile.PL view on Meta::CPAN
'HarfBuzz::Shaper' => 0.026, # Text::Layout
'String::Interpolate::Named' => 1.060,
# 'SVGPDF' => 0.089,
'Text::Layout' => 0.045,
'Data::Printer' => 1.001001,
'File::Copy' => 2.32, # Core
'File::HomeDir' => 1.004,
'IPC::Run3' => 0.049,
'Image::Info' => 1.41,
'JSON::XS' => 4.03,
'JavaScript::QuickJS' => 0.18,
'LWP::Protocol::https' => 6.14, # File::LoadLines
'List::Util' => 1.46,
'Mozilla::CA' => 20230801, # File::LoadLines
'Object::Pad' => 0.818,
'Pod::Usage' => 2.03, # Core
'Ref::Util' => 0.204,
'Scalar::Util' => 1.63,
'Storable' => 3.08,
'Test::More::UTF8' => 0.05,
lib/ChordPro.pm view on Meta::CPAN
$VERSION =~ /_/ ? " (Unsupported development snapshot)" : "",
"\n"
);
exit $exit if defined $exit;
}
sub app_about {
my ($fh, $level, $exit) = @_;
if ( $level > 2 ) {
require JSON::XS;
select $fh; $| = 1; # otherwise no output on MacOS
print ${fh} ( JSON::XS->new->canonical->
# pretty->
utf8->convert_blessed->encode(runtime_info()) );
}
else {
print ${fh} <<EndOfAbout,
ChordPro: A lyrics and chords formatting program.
ChordPro will read a text file containing the lyrics of one or many
songs plus chord information. ChordPro will then generate a
lib/ChordPro.pm view on Meta::CPAN
require JavaScript::QuickJS;
$vv->("JavaScript::QuickJS");
};
eval {
require JSON::Relaxed;
$vv->( "JSON::Relaxed" );
};
eval {
require JSON::XS;
$vv->("JSON::XS");
};
$res->{modules} = [ @p ];
$res->{metadata} = $::config->{metadata}{keys};
@p = ( qw(title subtitle),
( grep { !/^(sub)?title$/ } sort(@{$::config->{metadata}{keys}//[]}) ),
grep { !/^(sub)?title$/ } (keys(%{ChordPro::Song::_directives()})) );
$res->{directives} = [ @p ];
lib/ChordPro/Config/Data.pm view on Meta::CPAN
#! perl #### THIS IS A GENERATED FILE. DO NO MODIFY
package ChordPro::Config::Data;
use JSON::XS qw();
use JSON::Relaxed::Parser qw();
use feature qw(state);
# Config version.
our $VERSION = 6.081;
sub config {
state $pp = JSON::XS->new->utf8
->boolean_values( $JSON::Boolean::false, $JSON::Boolean::true );
$pp->decode( <<'EndOfJSON' );
{"$schema":"https://chordpro.org/beta/resources/config.schema","a2crd":{"classifier":"pct_chords","infer-titles":true,"tabstop":"8"},"assets":{},"chord-formats":{"common":"%{root|%{}%{qual|%{}}%{ext|%{}}%{bass|/%{}}|%{name}}","nashville":"%{root|%{}%...
EndOfJSON
}
1;
lib/ChordPro/Utils.pm view on Meta::CPAN
our $json_last;
sub json_load( $json, $source = "<builtin>" ) {
# We have two JSON parsers: Relaxed and XS.
# Relaxed accepts a lot of relaxing extensions, but XS is much
# much faster. So fast, in fact, that trying XS first will be a
# win in many cases, and a neglectable overhead in the other
# cases.
state $jx = JSON::XS->new;
$jx->relaxed;
# Glue lines, so we have at lease some relaxation.
$json =~ s/"\s*\\\r?\n\s*"//g;
my $data;
$json_last = "xs";
eval { $data = $jx->decode($json."\n"); $_json_xs++ };
return $data if defined $data;
script/cfgboot.pl view on Meta::CPAN
my $test = 0; # test mode.
# Process command line options.
app_options();
$trace |= ($debug || $test);
################ The Process ################
use JSON::Relaxed qw();
use JSON::XS qw();
use File::LoadLines;
use Encode qw(decode_utf8);
binmode STDOUT => ':utf8';
binmode STDERR => ':utf8';
my $parser = JSON::Relaxed::Parser->new
( booleans => [ $Types::Serialiser::false, $Types::Serialiser::true ] );
my $json = "";
# RJSON files can be concatenated.
script/cfgboot.pl view on Meta::CPAN
$json .= loadlines( $file, $opts );
die( "$file: $opts->{error}\n") if $opts->{error};
}
my $data = $parser->decode($json);
if ( $parser->is_error ) {
warn( "JSON error: ", $parser->err_msg, "\n" );
next;
}
my $writer = JSON::XS->new->canonical->utf8(0)->pretty($test)->convert_blessed;
if ( $output && $output ne "-" ) {
open( my $fd, '>:utf8', $output )
or die("$output: $!\n");
select $fd;
}
print <<'EOD';
#! perl #### THIS IS A GENERATED FILE. DO NO MODIFY
package ChordPro::Config::Data;
use JSON::XS qw();
use JSON::Relaxed::Parser qw();
use feature qw(state);
EOD
print "# Config version.\nour \$VERSION = ", $data->{meta}->{_configversion}, ";\n\n";
print <<'EOD';
sub config {
state $pp = JSON::XS->new->utf8
->boolean_values( $JSON::Boolean::false, $JSON::Boolean::true );
$pp->decode( <<'EndOfJSON' );
EOD
print ( $writer->encode($data), "\n" );
print <<EOD;
EndOfJSON
}
script/rrjson.pl view on Meta::CPAN
print "\n" unless $pretty;
}
elsif ( $mode eq "rjson" ) {
print $parser->encode( data => $data,
strict => 1,
indent => $indent,
maybe schema => $schema );
print "\n" unless $pretty;
}
elsif ( $mode eq "json_xs" ) {
require JSON::XS;
print ( JSON::XS->new->canonical->utf8(0)->pretty($pretty)
->boolean_values( $JSON::PP::false, $JSON::PP::true )
->convert_blessed->encode($data) );
}
elsif ( $mode eq "toml" ) {
require TOML::Tiny;
my $parser = TOML::Tiny->new();
print ( TOML::Tiny::to_toml($data) );
}
t/001_prereq.t view on Meta::CPAN
diag("Using $pdfapi $pdfapiv for PDF generation");
}
++$test; use_ok( "Text::Layout", 0.045 );
eval {
require HarfBuzz::Shaper;
HarfBuzz::Shaper->VERSION(0.026);
diag( "Shaping enabled (HarfBuzz::Shaper $HarfBuzz::Shaper::VERSION)" );
1;
} || diag( "Shaping disabled (HarfBuzz::Shaper not found)" );
++$test; use_ok( "JSON::PP", 2.27203 );
++$test; require_ok( "JSON::XS" ); JSON::XS->VERSION(4.03);
++$test; use_ok( "String::Interpolate::Named", 1.060 );
++$test; use_ok( "File::HomeDir", 1.004 );
++$test; use_ok( "File::LoadLines", 1.047 );
++$test; use_ok( "SVGPDF", 0.080 );
++$test; use_ok( "Image::Info", 1.41 );
++$test; use_ok( "List::Util", 1.33 );
++$test; use_ok( "Storable", 3.08 );
++$test; use_ok( "Object::Pad", 0.818 );
++$test; use_ok( "JavaScript::QuickJS", 0.18 );
( run in 3.782 seconds using v1.01-cache-2.11-cpan-5837b0d9d2c )