Search::Tools::RegExp - (**DEPRECATED**) build regular expressions from search queries


Search-Tools documentation Contained in the Search-Tools distribution.

Index


Code Index:

NAME

Top

Search::Tools::RegExp - (**DEPRECATED**) build regular expressions from search queries

SYNOPSIS

Top

 # use Search::Tools::QueryParser




DESCRIPTION

Top

As of version 0.24 this class is deprecated in favor of Search::Tools::QueryParser.

METHODS

Top

init

build

isHTML

kw

AUTHOR

Top

Peter Karman perl@peknet.com

Based on the HTML::HiLiter regular expression building code, originally by the same author, copyright 2004 by Cray Inc.

Thanks to Atomic Learning www.atomiclearning.com for sponsoring the development of this module.

COPYRIGHT

Top

SEE ALSO

Top

HTML::HiLiter, Search::Tools, Search::Tools::RegExp::Keywords, Search::Tools::RegExp::Keyword


Search-Tools documentation Contained in the Search-Tools distribution.

package Search::Tools::RegExp;
use strict;
use warnings::register;
use base qw( Search::Tools::Object );
use Carp;
use Search::Tools::Keywords;
use Search::Tools::RegExp::Keywords;
use Search::Tools::RegExp::Keyword;

our $VERSION = '0.59';

__PACKAGE__->mk_accessors(qw( kw ));

sub init {
    my $self         = shift;
    my %args         = @_;
    my @args_to_init = grep { $self->can($_) } keys %args;
    my @args_to_pass = grep { !$self->can($_) } keys %args;

    $self->SUPER::init( map { $_ => $args{$_} } @args_to_init );

    $self->kw(
        Search::Tools::Keywords->new( map { $_ => $args{$_} } @args_to_pass )
    ) unless $self->kw;

}

sub isHTML { croak "use XML->looks_like_html instead of RegExp->isHTML" }

sub build {
    my $self = shift;
    my $query = shift or croak "need query to build() RegExp object";

    warnings::warn(
        "as of version 0.24 you should use Search::Tools::QueryParser instead of RegExp"
    ) if warnings::enabled();

    my $q_array;
    if ( ref $query and ref $query ne 'ARRAY' ) {
        $q_array = $query->{keywords};
    }
    else {
        $q_array = [ $self->kw->extract($query) ];
    }

    my $q2regexp = {};
    for my $q (@$q_array) {
        my ( $plain, $html ) = $self->kw->_build_regex($q);
        $q2regexp->{$q} = Search::Tools::RegExp::Keyword->new(
            plain  => $plain,
            html   => $html,
            word   => $q,
            phrase => $q =~ m/\ / ? 1 : 0
        );

    }

    my $kw = Search::Tools::RegExp::Keywords->new(
        hash        => $q2regexp,
        array       => $q_array,
        kw          => $self->kw,
        start_bound => $self->kw->{start_bound},
        end_bound   => $self->kw->{end_bound},
    );

    return $kw;
}

1;
__END__