| Pangloss documentation | Contained in the Pangloss distribution. |
Pangloss::Search::Filter::Base - base class for collection filters
# abstract - must be subclassed for use: use Pangloss::Search::Filter::FooBar; my $filter = new Pangloss::Search::Filter::FooBar()->set( $baz );
An abstract search filter object for use with <Pangloss::Collection::Item>s.
get/set this filter's hash of collection-item keys (see sub-classes for usage).
get the keys as a list.
toggle given key, returns current state true => on, false => off.
set given keys to on.
set given keys to off.
test to see if the given key is set.
clear all set keys.
get number of keys currently set.
test to see if no keys are currently set.
test to see if any keys are currently set.
deprecated aliases to set, unset & is_set.
At the very least, you must do the following:
package Foo;
use base qw( Pangloss::Search::Filter::Base );
sub applies_to {
my $self = shift;
my $term = shift;
# use $term, $self->item_keys and the collections
# available via $self->parent to do your test
return 0 || 1;
}
Steve Purkis <spurkis@quiup.com>
Pangloss::Search::Filter::Category, Pangloss::Search::Filter::Concept, Pangloss::Search::Filter::Language, Pangloss::Search::Filter::Proofreader, Pangloss::Search::Filter::Translator, Pangloss::Search::Filter::Status, Pangloss::Search::Filter::DateRange
| Pangloss documentation | Contained in the Pangloss distribution. |
package Pangloss::Search::Filter::Base; use Error; use OpenFrame::WebApp::Error::Abstract; use base qw( Pangloss::Search::Filter ); use accessors qw( item_keys ); our $VERSION = ((require Pangloss::Version), $Pangloss::VERSION)[1]; our $REVISION = (split(/ /, ' $Revision: 1.7 $ '))[2]; sub init { shift->reset(); } sub applies_to { my $class = shift->class; throw OpenFrame::WebApp::Error::Abstract( class => $class ); } sub set { my $self = shift; $self->item_keys->{$_} = 1 for @_; return $self; } sub unset { my $self = shift; delete $self->item_keys->{$_} for @_; return $self; } sub reset { shift->item_keys( {} ); } sub is_set { exists shift->item_keys->{shift()}; } sub not_set { ! shift->is_set( @_ ); } sub toggle { my $self = shift; my $key = shift; if ($self->exists( $key )) { $self->unset( $key ); return 0; } $self->set( $key ); return 1; } sub add { shift->set( @_ ); } sub del { shift->unset( @_ ); } sub exists { shift->is_set( @_ ); } sub keys { return CORE::keys( %{ shift->item_keys } ); } sub size { return scalar CORE::keys( %{ shift->item_keys } ); } sub is_empty { return shift->size ? 0 : 1; } sub not_empty { return ! shift->is_empty; } 1; __END__ #------------------------------------------------------------------------------