--- trunk/Estraier.pm 2006/08/06 12:48:02 166 +++ trunk/Estraier.pm 2006/08/06 18:43:58 176 @@ -4,7 +4,7 @@ use strict; use warnings; -our $VERSION = '0.07_3'; +our $VERSION = '0.07'; =head1 NAME @@ -677,6 +677,22 @@ return $self->{skip}; } +=head2 set_mask + +Filter out some links when searching. + +Argument array of link numbers, starting with 0 (current node). + + $cond->set_mask(qw/0 1 4/); + +=cut + +sub set_mask { + my $self = shift; + return unless (@_); + $self->{mask} = \@_; +} + package Search::Estraier::ResultDocument; @@ -1353,7 +1369,7 @@ $path = '/etch_doc' if ($a->{etch}); if ($a->{id}) { - croak "id must be numberm not '$a->{id}'" unless ($a->{id} =~ m/^\d+$/); + croak "id must be number not '$a->{id}'" unless ($a->{id} =~ m/^\d+$/); $arg = 'id=' . $a->{id}; } elsif ($a->{uri}) { $arg = 'uri=' . uri_escape($a->{uri}); @@ -1564,6 +1580,13 @@ push @args, 'awidth=' . $self->{awidth}; push @args, 'skip=' . $cond->{skip} if ($cond->{skip}); + if ($cond->{mask}) { + my $mask = 0; + map { $mask += ( 2 ** $_ ) } @{ $cond->{mask} }; + + push @args, 'mask=' . $mask if ($mask); + } + return join('&', @args); }