X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2FID3FS%2FPath.pm;h=6665122e94da2009b857d655730783b6883db006;hb=da358c7f7a23904348862f21e2192de5539cfb30;hp=2353b017da9f8b29150aeec4bcf6b3b19f908016;hpb=b30d0a3dc4ef78cc04c49efb4dbfb533e8763ef7;p=id3fs.git diff --git a/lib/ID3FS/Path.pm b/lib/ID3FS/Path.pm index 2353b01..6665122 100644 --- a/lib/ID3FS/Path.pm +++ b/lib/ID3FS/Path.pm @@ -67,10 +67,12 @@ sub dirents my @dents=(); my $state=$self->state(); print "DIRENTS: STATE: $state\n"; - if($state==$STATE_TAG) + if($state==$STATE_TAG || $state==$STATE_TAGVAL) { my $tag=$self->{elements}->[$#{$self->{elements}}]; - if(defined($tag) && (ref($tag) eq "ID3FS::PathElement::Tag") && + if($state==$STATE_TAG && + defined($tag) && + ref($tag) eq "ID3FS::PathElement::Tag" && $self->{db}->tag_has_values($tag->{id})) { print "DIRENTS: TAG: TAGVALUES\n"; @@ -78,7 +80,7 @@ sub dirents } else { - print "DIRENTS: TAG: ARTISTS\n"; + print "DIRENTS: TAG/TAGVAL($state): ARTISTS\n"; @dents=(qw(AND ALLTRACKS), # FIXME: NOT and OR $self->{db}->artists(@{$self->{elements}})); } @@ -148,18 +150,20 @@ sub parse } } } - elsif($state==$STATE_TAG) + elsif($state==$STATE_TAG || $state==$STATE_TAGVAL) { - print "SM: TAG: $name\n"; + print "SM: TAG/TAGVAL($state): $name\n"; my $tag=$self->{elements}->[$#{$self->{elements}}]; - if(defined($tag) && + if($state==$STATE_TAG && + defined($tag) && ref($tag) eq "ID3FS::PathElement::Tag" && $self->{db}->tag_has_values($tag->{id})) { my $tagval=ID3FS::PathElement::Tagval->new($name); if(defined($tagval)) { - $self->state($STATE_BOOLEAN); + $self->state($STATE_TAGVAL); + # stay in tag state push(@{$self->{elements}}, $tagval); } else @@ -200,10 +204,6 @@ sub parse } } } - elsif($state==$STATE_TAGVAL) - { - print "SM: TAGVAL: $name\n"; - } elsif($state==$STATE_BOOLEAN) { print "SM: BOOLEAN: $name\n";