The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
package Pangloss::Search::Filter::Keyword;

use base      qw( Pangloss::Search::Filter );
use accessors qw( text );

our $VERSION  = ((require Pangloss::Version), $Pangloss::VERSION)[1];
our $REVISION = (split(/ /, ' $Revision: 1.4 $ '))[2];

sub text_re {
    my $self = shift;
    my $text = $self->text;
    return qr/$text/i;
}

# mimick Pg::Search::Filter::Base API
sub get   { shift->text; }
sub set   { shift->text( @_ ); }
sub unset { shift->text( undef ); }
sub is_empty  { ! shift->not_empty; }
sub not_empty { shift->text ? 1 : 0; }

sub applies_to {
    my $self   = shift;
    my $term   = shift;
    my $search = join( "\n", $term->name, $term->concept );
    my $re     = $self->text_re;
    return $search =~ /$re/;
}

1;