projects
/
id3fs.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
20e563d
)
/ALL fixes
author
Ian Beckwith
<ianb@erislabs.net>
Sun, 10 Oct 2010 23:59:16 +0000
(
00:59
+0100)
committer
Ian Beckwith
<ianb@erislabs.net>
Sun, 10 Oct 2010 23:59:16 +0000
(
00:59
+0100)
lib/ID3FS/Path.pm
patch
|
blob
|
history
diff --git
a/lib/ID3FS/Path.pm
b/lib/ID3FS/Path.pm
index
ee8353d
..
cee1a45
100644
(file)
--- a/
lib/ID3FS/Path.pm
+++ b/
lib/ID3FS/Path.pm
@@
-12,7
+12,7
@@
use ID3FS::Path::Node;
our ($STATE_INVALID, $STATE_ROOT, $STATE_TAG, $STATE_TAGVAL,
$STATE_BOOLEAN, $STATE_ALBUMS, $STATE_TRACKLIST,
our ($STATE_INVALID, $STATE_ROOT, $STATE_TAG, $STATE_TAGVAL,
$STATE_BOOLEAN, $STATE_ALBUMS, $STATE_TRACKLIST,
- $STATE_FILE
)=(0..7
);
+ $STATE_FILE
, $STATE_ALL)=(0..8
);
our %priorities=( "OR" => 0, "AND" => 1, "NOT" => 2 );
our %priorities=( "OR" => 0, "AND" => 1, "NOT" => 2 );
@@
-72,7
+72,11
@@
sub dirents
my $state=$self->state();
# print "DIRENTS: STATE: $state\n";
# print "DIRENTS: FILE: $self->{path}\n";
my $state=$self->state();
# print "DIRENTS: STATE: $state\n";
# print "DIRENTS: FILE: $self->{path}\n";
- if($state==$STATE_TAG || $state==$STATE_TAGVAL)
+ if($state==$STATE_ALL)
+ {
+ push(@dents, qw(TRACKS NOARTIST), $self->artists());
+ }
+ elsif($state==$STATE_TAG || $state==$STATE_TAGVAL)
{
my $tag=$self->tail();
if($state==$STATE_TAG &&
{
my $tag=$self->tail();
if($state==$STATE_TAG &&
@@
-84,8
+88,7
@@
sub dirents
}
else
{
}
else
{
- @dents=(qw(AND OR TRACKS NOARTIST),
- $self->artists());
+ push(@dents, qw(AND OR TRACKS NOARTIST), $self->artists());
}
}
elsif($state==$STATE_BOOLEAN)
}
}
elsif($state==$STATE_BOOLEAN)
@@
-143,7
+146,7
@@
sub parse
# print "SM: ROOT: $name\n";
if($name eq "ALL")
{
# print "SM: ROOT: $name\n";
if($name eq "ALL")
{
- $self->state($STATE_
TAG
);
+ $self->state($STATE_
ALL
);
}
elsif($name eq "NOT")
{
}
elsif($name eq "NOT")
{
@@
-293,6
+296,30
@@
sub parse
# Can't have anything after a filename
$self->state($STATE_INVALID);
}
# Can't have anything after a filename
$self->state($STATE_INVALID);
}
+ elsif($state==$STATE_ALL)
+ {
+ if($name eq "TRACKS")
+ {
+ $self->state($STATE_TRACKLIST);
+ }
+ elsif($name eq "NOARTIST")
+ {
+ $self->state($STATE_TRACKLIST);
+ }
+ else
+ {
+ my $artist=ID3FS::PathElement::Artist->new($self->{db}, $name);
+ if($artist)
+ {
+ push(@{$self->{elements}}, $artist);
+ $self->state($STATE_ALBUMS);
+ }
+ else
+ {
+ $self->state($STATE_INVALID);
+ }
+ }
+ }
else
{
print "SM: ERROR: UNKNOWN STATE: $self->{state}\n";
else
{
print "SM: ERROR: UNKNOWN STATE: $self->{state}\n";