# ***********************************************
# 
# !!!! DO NOT EDIT !!!!
# 
# This file was auto-generated by Build.PL.
# 
# ***********************************************
# 
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
# 
#     http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

=encoding utf8

=head1 NAME

Lucy::Analysis::Analyzer - Tokenize/modify/filter text.

=head1 SYNOPSIS

    # Abstract base class.

=head1 DESCRIPTION

An Analyzer is a filter which processes text, transforming it from one form
into another.  For instance, an analyzer might break up a long text into
smaller pieces (L<RegexTokenizer|Lucy::Analysis::RegexTokenizer>), or it
might perform case folding to facilitate case-insensitive search
(L<Normalizer|Lucy::Analysis::Normalizer>).

=head1 CONSTRUCTORS

=head2 new

    package MyAnalyzer;
    use base qw( Lucy::Analysis::Analyzer );
    our %foo;
    sub new {
        my $self = shift->SUPER::new;
        my %args = @_;
        $foo{$$self} = $args{foo};
        return $self;
    }

Abstract constructor.  Takes no arguments.

=head1 ABSTRACT METHODS

=head2 transform

    my $inversion = $analyzer->transform($inversion);

Take a single L<Inversion|Lucy::Analysis::Inversion> as input
and returns an Inversion, either the same one (presumably transformed
in some way), or a new one.

=over

=item *

B<inversion> - An inversion.

=back

=head1 METHODS

=head2 transform_text

    my $inversion = $analyzer->transform_text($text);

Kick off an analysis chain, creating an Inversion from string input.
The default implementation simply creates an initial Inversion with a
single Token, then calls L<transform()|/transform>, but occasionally subclasses will
provide an optimized implementation which minimizes string copies.

=over

=item *

B<text> - A string.

=back

=head2 split

    my $arrayref = $analyzer->split($text);

Analyze text and return an array of token texts.

=over

=item *

B<text> - A string.

=back

=head2 dump

    my $obj = $analyzer->dump();

Dump the analyzer as hash.

Subclasses should call L<dump()|/dump> on the superclass. The returned
object is a hash which should be populated with parameters of
the analyzer.

Returns: A hash containing a description of the analyzer.

=head2 load

    my $obj = $analyzer->load($dump);

Reconstruct an analyzer from a dump.

Subclasses should first call L<load()|/load> on the superclass. The
returned object is an analyzer which should be reconstructed by
setting the dumped parameters from the hash contained in C<dump>.

Note that the invocant analyzer is unused.

=over

=item *

B<dump> - A hash.

=back

Returns: An analyzer.

=head1 INHERITANCE

Lucy::Analysis::Analyzer isa Clownfish::Obj.

=cut