merge ARTIST and TAG states
authorIan Beckwith <ianb@erislabs.net>
Sat, 25 Sep 2010 00:08:31 +0000 (01:08 +0100)
committerIan Beckwith <ianb@erislabs.net>
Sat, 25 Sep 2010 00:08:31 +0000 (01:08 +0100)
lib/ID3FS/Path.pm

index ea575a0..d2226ff 100644 (file)
@@ -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)