From 125aa69f2632c386f65b413ae0cb095ff0afd886 Mon Sep 17 00:00:00 2001 From: Ian Beckwith Date: Sat, 23 Oct 2010 20:17:49 +0100 Subject: [PATCH] tidy code --- lib/ID3FS/Path.pm | 35 ++++++++++------------------------- lib/ID3FS/Path/Node.pm | 16 ---------------- 2 files changed, 10 insertions(+), 41 deletions(-) diff --git a/lib/ID3FS/Path.pm b/lib/ID3FS/Path.pm index de8d63b..406fbdf 100644 --- a/lib/ID3FS/Path.pm +++ b/lib/ID3FS/Path.pm @@ -48,7 +48,6 @@ sub new $self->{path} =~ s/\/\//\//g; # drop doubled slashes $self->parse(); -# print "STATE: ", $self->state(), "\n"; return $self; } @@ -91,8 +90,6 @@ sub dirents my @dents=(); my @fents=(); my $state=$self->state(); -# print "DIRENTS: STATE: $state\n"; -# print "DIRENTS: FILE: $self->{path}\n"; if($state==$STATE_ALL) { @dents=($self->filter($PATH_ALLTRACKS, $PATH_NOARTIST), $self->artists()); @@ -149,7 +146,6 @@ sub parse return if($self->{path} eq "/"); @{$self->{components}}=split(/\//, $self->{path}); shift @{$self->{components}}; # drop empty field before leading / -# print "PATH: $self->{path}\n"; my @parts=@{$self->{components}}; my($tag, $tagval); $self->{elements}=[]; @@ -158,16 +154,13 @@ sub parse my $tags_seen=0; while(defined(my $name=shift @parts)) { -# print "NAME: $name\n"; my $state=$self->state(); if($state==$STATE_INVALID) { -# print "SM: INVALID: $name\n"; return; } elsif($state==$STATE_ROOT) { -# print "SM: ROOT: $name\n"; if($name eq "ALL") { $self->{in_all}=1; @@ -197,10 +190,8 @@ sub parse elsif($state==$STATE_TAG) { my $tag=$self->tail(); -# print "SM: TAG/TAGVAL($state): $name\n"; if($self->is($TYPE_TAG, $tag) && $self->{db}->tag_has_values($tag->id())) { -# print "Parsing: parent: $tag->id()\n"; my $tagval=ID3FS::Path::Node->new($self->{db}, $TYPE_TAG, $name, $tag->id()); if(defined($tagval)) { @@ -246,7 +237,6 @@ sub parse } elsif($state==$STATE_BOOLEAN) { -# print "SM: BOOLEAN: $name\n"; my $parent=$self->tail(); my $allownot=1; if($self->is($TYPE_BOOL, $parent) && @@ -276,7 +266,6 @@ sub parse } elsif($state==$STATE_ALBUMS) { -# print "SM: ALBUM: $name\n"; if($name eq $PATH_ALLTRACKS) { $self->state($STATE_TRACKLIST); @@ -301,7 +290,6 @@ sub parse } elsif($state==$STATE_TRACKLIST) { -# print "SM: TRACKLIST: $name\n"; my $track=ID3FS::Path::Node->new($self->{db}, $TYPE_FILE, $name); if($track) { @@ -315,7 +303,6 @@ sub parse } elsif($state==$STATE_FILE) { -# print "SM: FILE: $name\n"; # Can't have anything after a filename $self->state($STATE_INVALID); } @@ -356,14 +343,17 @@ sub parse { pop @elements; } -# print "\nELEMENTS: ", join(' ', map { $_->name(); } @elements), "\n"; - my @joins=$self->number_joins(@elements); - @joins=qw(INNER) unless(@joins); - $self->{joins}=\@joins; -# print "AFTER: ", join(' ', map { $_->name() . "(" . $_->{table} . ")"; } @elements), "\n"; -# print "JOINS: ", join(', ', @joins), "\n"; + + # calculate joins and assign table numbers to nodes + $self->{joins}=[$self->number_joins(@elements)]; + + # always need at least one join + $self->{joins}=[qw(INNER)] unless(@{$self->{joins}}); + # sort elements by precedence @elements=$self->sort_elements(@elements); + + # convert to binary tree $self->{tagtree}=$self->elements_to_tree(\@elements); } @@ -397,6 +387,7 @@ sub number_joins } else { + $node->hasvals(0); if(@elements) { # if tag has a value, eat the tag, shifting to the value @@ -405,10 +396,6 @@ sub number_joins $node->hasvals(1); $node=shift(@elements); } - else - { - $node->hasvals(0); - } } elsif($self->{db}->tag_has_values($node->id())) { @@ -736,8 +723,6 @@ sub tags_subselect { my($self)=@_; my $tree=$self->{tagtree}; -# use Data::Dumper; -# print Dumper $tree; my ($sqlclause, @joins)=$tree->to_sql() if($tree); my $sql="\tSELECT fxt1.files_id FROM tags t1"; my @crosses=(); diff --git a/lib/ID3FS/Path/Node.pm b/lib/ID3FS/Path/Node.pm index b343090..52888a6 100644 --- a/lib/ID3FS/Path/Node.pm +++ b/lib/ID3FS/Path/Node.pm @@ -114,20 +114,4 @@ sub used_tags return $self->id(); } -# does the bottom right-most expression end in a NOT? -sub right_ends_in_not -{ - my($self, $node)=@_; - return 0 unless($node); - my $right=$node->right(); - if($right && $right->type() == $TYPE_BOOL) - { - return $self->right_ends_in_not($right); - } - my $op=$node->name(); - return 0 unless($op); - return 1 if($op eq "NOT"); - return 0; -} - 1; -- 2.11.0