From c0c7f67030ea055e8170fb5244eb0f8fa1387b2f Mon Sep 17 00:00:00 2001 From: Ian Beckwith Date: Sat, 25 Sep 2010 01:08:31 +0100 Subject: [PATCH] merge ARTIST and TAG states --- lib/ID3FS/Path.pm | 72 +++++++++++++++++++++++++------------------------------ 1 file changed, 33 insertions(+), 39 deletions(-) diff --git a/lib/ID3FS/Path.pm b/lib/ID3FS/Path.pm index ea575a0..d2226ff 100644 --- a/lib/ID3FS/Path.pm +++ b/lib/ID3FS/Path.pm @@ -11,8 +11,8 @@ use ID3FS::PathElement::Tag; use ID3FS::PathElement::Tagval; our ($STATE_INVALID, $STATE_ROOT, $STATE_TAG, $STATE_TAGVAL, - $STATE_BOOLEAN, $STATE_ARTISTS, $STATE_ALBUMS, $STATE_TRACKLIST, - $STATE_FILE)=(0..8); + $STATE_BOOLEAN, $STATE_ALBUMS, $STATE_TRACKLIST, + $STATE_FILE)=(0..7); sub new { @@ -70,7 +70,8 @@ sub dirents { when($STATE_TAG) { - @dents=qw(AND ARTISTS ALBUMS TRACKS); + @dents=(qw(AND ALLTRACKS), # FIXME: NOT and OR + $self->{db}->artists(@{$self->{elements}})); } when($STATE_BOOLEAN) { @@ -80,13 +81,9 @@ sub dirents { @dents=("ALL", $self->{db}->tags(@{$self->{elements}})); } - when($STATE_ARTISTS) - { - @dents=$self->{db}->artists(@{$self->{elements}}); - } when($STATE_ALBUMS) { - @dents=$self->{db}->albums(@{$self->{elements}}); + @dents=("TRACKS", $self->{db}->albums(@{$self->{elements}})); } when($STATE_TRACKLIST) { @@ -127,7 +124,7 @@ sub parse print "SM: ROOT: $name\n"; if($name eq "ALL") { - $self->state($STATE_ARTISTS); + $self->state($STATE_TAG); } else { @@ -153,22 +150,27 @@ sub parse $self->state($STATE_BOOLEAN); # push(@{$self->{elements}}, ID3FS::PathElement::Boolean->new($name)); } - when("ARTISTS") + when("ALLTRACKS") { - $self->state($STATE_ARTISTS); + $self->state($STATE_TRACKLIST); } - when("ALBUMS") + when("OR") { - $self->state($STATE_ALBUMS); + $self->state($STATE_BOOLEAN); +# push(@{$self->{elements}}, ID3FS::PathElement::Boolean->new($name)); } - when("TRACKS") + when("NOT") { - $self->state($STATE_TRACKLIST); + $self->state($STATE_TAG); +# push(@{$self->{elements}}, ID3FS::PathElement::Boolean->new($name)); } - -# when("OR") { ; } -# when("NOT") { ; } - default + my $artist=ID3FS::PathElement::Artist->new($self->{db}, $name); + if($artist) + { + push(@{$self->{elements}}, $artist); + $self->state($STATE_ALBUMS); + } + else { $self->state($STATE_INVALID); } @@ -211,34 +213,26 @@ sub parse $self->state($STATE_INVALID); } } - when($STATE_ARTISTS) - { - print "SM: ARTIST: $name\n"; - my $artist=ID3FS::PathElement::Artist->new($self->{db}, $name); - push(@{$self->{elements}}, $tag); - if($artist) - { - push(@{$self->{elements}}, $artist); - $self->state($STATE_ALBUMS); - } - else - { - $self->state($STATE_INVALID); - } - } when($STATE_ALBUMS) { print "SM: ALBUM: $name\n"; - my $album=ID3FS::PathElement::Album->new($self->{db}, $name); - push(@{$self->{elements}}, $album); - if($album) + if($name eq "TRACKS") { - push(@{$self->{elements}}, $album); $self->state($STATE_TRACKLIST); } else { - $self->state($STATE_INVALID); + my $album=ID3FS::PathElement::Album->new($self->{db}, $name); + push(@{$self->{elements}}, $album); + if($album) + { + push(@{$self->{elements}}, $album); + $self->state($STATE_TRACKLIST); + } + else + { + $self->state($STATE_INVALID); + } } } when($STATE_TRACKLIST) -- 2.11.0