NAME
    Text::Phonetic - A module implementing various phonetic algorithm

SYNOPSIS
      use Text::Phonetic;
  
      my $phonetic = Text::Phonetic::Metaphone->new();
      $encoded_string = $phonetic->encode($string);
      @encoded_list = $phonetic->encode(@list);
  
      my $same = $phonetic->compare($string1,$string2);

    This module provides an easy and convinient way to encode names with
    various phonetic algorithms. It acts as a wrapper arround other phonetic
    algorithm modules like Text::Metaphone, Text::DoubleMetaphone,
    Text::Soundex and also implements some other algorithms such as
    Text::Phonetic::DaitchMokotoff, Text::Phonetic::Koeln and
    Text::Phonetic::Phonix.

    The module can easily be subclassed.

DESCRIPTION
  new
     $obj = Text::Phonetic::SUBCLASS->new({ %PARAMETERS })
 
    You can pass arbitrary attributes to the constructor. The only global
    attribute is "unidecode" which defaults to 1 if not set. This attribute
    controlls if non-latin characters should be transliterated to A-Z.

    Additional attributes may be defined by subclasses.

  encode
     $RETURN_STRING = $obj->encode($STRING);
     OR
     @RETURN_LIST = $obj->encode(@LIST);
     OR
     $RETURN_LIST_REF = $obj->encode(@LIST);
 
    Encodes the given string or list of strings. Returns a single value,
    array or array reference depending on the caller context and parameters.

  compare
     $RETURN_CODE = $obj->compare($STRING1,$STRING2);
 
    The return code is an integer between 100 and 0 indicating the
    likelihood that the to results are the same. 100 usually means that the
    strings are completely identical. 90 means that the strings match after
    all non-latin characters have been transliterated. Values in between 90
    and 0 mean that the given strings likely match. 0 means that the used
    alogorithm couldn't match the two strings at all. "compare" is a
    shortcut to the "$obj-&gt;_do_compare($CODE1,$CODE2)" method.

SUBLCASSING
    You can easily subclass Text::Phonetic and add your own phonetic
    algorithm. All subclasses have to use Text::Phonetic as their base
    class, and the following methods need to be implemented:

  _do_encode
     $RESULT = $obj->_do_encode($STRING);

    This method does the actual encoding. It should return only one element.
    (eg. string or some kind of reference)

  _do_compare
     $RETURN_STRING = $obj->_do_compare($RESULT1,$RESULT2);
 
    If your "_do_encode" method doesn't return a single string you also
    might need to implement a comparison method. It takes two results as
    returned by "_do_encode" and returns an integer value between 90 and 0
    (see "compare").

  Object structure
    The object is a simple Hash reference containing all parameters passed
    during construction.

  Helper functions
    _is_inlist
       Text::Phonetic::_is_inlist($STRING,@LIST);
       OR
       Text::Phonetic::_is_inlist($STRING,$LIST_REF);
 
      Returns a true value if $STRING is in the supplied list. Otherwise
      return false.

    _compare_list
       Text::Phonetic::_compare_list($LIST1_REF,$LIST2_REF);

      Compares the two arrays and returns true if at least one element is
      equal (ignoring the position) in both lists.

SUPPORT
    Please report any bugs or feature requests to
    "text-phonetic@rt.cpan.org", or through the web interface at
    <http://rt.cpan.org>. I will be notified, and then you'll automatically
    be notified of progress on your bug as I make changes.

AUTHOR
        Maroš Kollár
        CPAN ID: MAROS
        maros [at] k-1.com
        http://www.k-1.com

COPYRIGHT
    Text::Phonetic is Copyright (c) 2006,2007 Maroš. Kollár. All rights
    reserved.

    This program is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.

    The full text of the license can be found in the LICENSE file included
    with this module.

