}
}
# remove trailing boolean
- if(@{$self->{elements}} &&
- ref($self->{elements}->[$#{$self->{elements}}]) eq "ID3FS::PathElement::Boolean")
- {
- $self->{lastop}=pop @{$self->{elements}};
- }
+ my @elements=@{$self->{elements}};
+ pop @elements if(@elements && ref($elements[$#elements]) eq "ID3FS::PathElement::Boolean");
# sort elements by precedence
- @{$self->{elements}}=$self->sort_elements(@{$self->{elements}});
- $self->{tagtree}=$self->elements_to_tree([ @{$self->{elements}} ]);
+ @elements=$self->sort_elements(@elements);
+ $self->{tagtree}=$self->elements_to_tree(@elements);
if($self->{tagtree})
{
($self->{sqlconditions},
sub elements_to_tree
{
- my($self, $elements)=@_;
- return undef unless(@$elements);
+ my($self, @elements)=@_;
+ return undef unless(@elements);
my ($left, $right, $op)=(undef, undef, undef);
- my $thing=pop @$elements;
+ my $thing=pop @elements;
if(ref($thing) eq "ID3FS::PathElement::Boolean")
{
my $op=$thing;
- $right=$self->elements_to_tree($elements);
+ $right=$self->elements_to_tree(@elements);
if($op->{name} ne "NOT")
{
- $left=$self->elements_to_tree($elements);
+ $left=$self->elements_to_tree(@elements);
}
return ID3FS::Path::Node->new($left, $op, $right);
}
{
my($self)=@_;
my $tail=$self->{elements}->[$#{$self->{elements}}];
+ print "TAIL: ", ref($tail), "\n";
if($tail && ref($tail) eq "ID3FS::PathElement::Tag")
{
return($self->{db}->tag_has_values($tail->{id}));
return undef;
}
+sub trailing_tag_parent
+{
+ my($self)=@_;
+ my $tail=$self->{elements}->[$#{$self->{elements}}];
+ if($tail && ref($tail) eq "ID3FS::PathElement::Tag")
+ {
+ return($tail->{parents_id});
+ }
+ return undef;
+}
+
+
1;