NAME
Text::Query - Query processing framework
SYNOPSIS
use Text::Query;
# Constructor
$query = Text::Query->new([QSTRING] [OPTIONS]);
# Methods
$query->prepare(QSTRING [OPTIONS]);
$query->match([TARGET]);
$query->matchscalar([TARGET]);
DESCRIPTION
This module provides an object that matches a data source against a query expression.
Query expressions are compiled into an internal form when a new object is created or the `prepare' method is called; they are not recompiled on each match.
The class provided by this module uses four packages to process the query. The query parser parses the question and calls a query expression builder (internal form of the question). The optimizer is then called to reduce the complexity of the expression. The solver applies the expression on a data source.
The following parsers are provided:
Text::Query::ParseAdvanced
Text::Query::ParseSimple
The following builders are provided:
Text::Query::BuildAdvancedString
Text::Query::BuildSimpleString
The following solver is provided:
Text::Query::SolveSimpleString
Text::Query::SolveAdvancedString
EXAMPLES
use Text::Query;
my $q=new Text::Query('hello and world',
-parse => 'Text::Query::ParseAdvanced',
-solve => 'Text::Query::SolveAdvancedString',
-build => 'Text::Query::BuildAdvancedString');
die "bad query expression" if not defined $q;
print if $q->match;
...
$q->prepare('goodbye or adios or ta ta',
-litspace => 1,
-case => 1);
#requires single space between the two ta's
if($q->match($line)) {
#doesn't match "Goodbye"
...
$q->prepare('"and" or "or"');
#quoting operators for literal match
...
$q->prepare('\\bintegrate\\b', -regexp => 1);
#won't match "disintegrated"
CONSTRUCTOR
new ([QSTRING] [OPTIONS])
This is the constructor for a new Text::Query object. If a
`QSTRING' is given it will be compiled to internal form.
`OPTIONS' are passed in a hash like fashion, using key and
value pairs. Possible options are:
-parse - Package name of the parser. Default is
Text::Query::ParseSimple.
-build - Package name of the builder. Default is
Text::Query::Build.
-optimize - Package name of the optimizer. Default is
Text::Query::Optimize.
-solve - Package name of the solver. Default is
Text::Query::Solve.
-mode - Name of predefined group of packages to use. Options
are currently `simple_text' and `advanced_text'.
These options are handled by the `configure' method.
All other options are passed to the parser `prepare'
function. See the corresponding manual pages for a
description.
If `QSTRING' is undefined, the prepare function is not
called.
The constructor will croak if a `QSTRING' was supplied and
had illegal syntax.
METHODS
configure ([OPTIONS])
Set the `parse', `build', `optimize' or `solve' packages.
See the `CONSTRUCTOR' description for explanations.
prepare (QSTRING [OPTIONS])
Compiles the query expression in `QSTRING' to internal form
and sets any options (same as in the constructor). `prepare'
may be used to change the query expression and options for
an existing query object. If `OPTIONS' are omitted, any
options set by a previous call to `prepare' are persistent.
The optimizer (-optimize) is called with the result of the
parser (-parse). The parser uses the builder (-build) to
construct the internal form.
This method returns a reference to the query object if the
syntax of the expression was legal, or croak if not.
match ([TARGET])
Calls the match method of the solver (-solve).
matchscalar ([TARGET])
Calls the matchscalar method of the solver (-solve).
SEE ALSO
Text::Query::ParseAdvanced(3), Text::Query::ParseSimple(3),
Text::Query::BuildSimpleString(3),
Text::Query::BuildAdvanedString(3),
Text::Query::SolveSimpleString(3),
Text::Query::SolveAdvancedString(3),
Text::Query::Build(3), Text::Query::Parse(3), Text::Query::Solve(3), Text::Query::Optimize(3)
AUTHORS
Eric Bohlman (ebohlman@netcom.com)
Loic Dachary (loic@senga.org)