App-Music-ChordPro
view release on metacpan or search on metacpan
lib/ChordPro/Chords/Parser.pm view on Meta::CPAN
package ChordPro::Chord::Roman;
our @ISA = 'ChordPro::Chord::Base';
sub transpose ( $self, $dummy1, $dummy2=0 ) { $self }
sub show {
Carp::croak("call canonical instead of show");
}
sub canonical ( $self ) {
my $res = $self->{root_canon} . $self->{qual} . $self->{ext};
if ( $self->{bass} && $self->{bass} ne "" ) {
$res .= "/" . lc($self->{bass});
}
return $res;
}
sub chord_display ( $self ) {
$self->SUPER::chord_display
( $::config->{"chord-formats"}->{roman}
// "%{name}" );
}
# Key name.
sub keyname( $k ) {
return $k->{parser}->root_canon( $k->{root_canon}, 0, $k->{qual_canon} eq '-' );
}
################ Chord objects: Annotations ################
package ChordPro::Chord::Annotation;
use String::Interpolate::Named;
our @ISA = 'ChordPro::Chord::Base';
sub transpose ( $self, $dummy1, $dummy2=0 ) { $self }
sub transcode ( $self, $dummy1, $dummy2=0 ) { $self }
sub canonical ( $self ) {
my $res = $self->{text};
return $res;
}
sub chord_display ( $self ) {
return interpolate( { args => $self }, $self->{text} );
}
# For convenience.
sub is_chord ( $self ) { 0 };
sub is_annotation ( $self ) { 1 };
################ Chord objects: Strums ################
package ChordPro::Chord::Strum;
# Special 'chord'-like objects for strums in grids.
#
# Main purpose is to show an arrow from the ChordProSymbols font.
our @ISA = 'ChordPro::Chord::Base';
use ChordPro::Symbols qw( strum );
sub new( $pkg, $data ) {
my $self = $pkg->SUPER::new( $data );
my $fmt = strum( $data->{name} );
unless ( defined $fmt ) {
warn("Unknown strum: $data->{name}\n");
$self->{format} = "";
}
else {
$self->{format} = $fmt;
}
return $self;
}
sub chord_display ( $self, $default = undef ) {
$self->{format};
}
sub transpose ( $self, $dummy1, $dummy2=0 ) { $self }
sub transcode ( $self, $dummy1, $dummy2=0 ) { $self }
sub canonical ( $self ) {
my $res = $self->{text};
return $res;
}
# For convenience.
sub is_chord ( $self ) { 0 };
sub is_annotation ( $self ) { 1 };
sub is_nc ( $self ) { 1 };
sub is_xpxc ( $self ) { 0 };
sub has_diagram ( $self ) { 0 };
sub is_gridstrum ( $self ) { 1 };
################ Chord objects: NC ################
package ChordPro::Chord::NC;
use String::Interpolate::Named;
our @ISA = 'ChordPro::Chord::Base';
sub transpose ( $self, $dummy1, $dummy2=0 ) { $self }
sub transcode ( $self, $dummy1, $dummy2=0 ) { $self }
sub canonical ( $self ) {
my $res = $self->{name};
return $res;
}
sub chord_display ( $self ) {
return interpolate( { args => $self }, $self->{name} );
}
# For convenience.
sub is_nc ( $self ) { 1 };
( run in 0.386 second using v1.01-cache-2.11-cpan-5735350b133 )