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 )