NAME

List::Filter::Transform - lists of find-and-replace operations

SYNOPSIS

use List::Filter::Transform;

@terms = ( [ 'subroutine', 'gi', 'method' ],
           { 'field',      'gi', 'attribute' ],
           { 'functional', 'gi', 'not broken' ],
          );

my $filter = List::Filter::Transform->new(
  { name         => 'oop_up_docs',
    terms        => \@terms ,
    description  =>
       "Hunt and destroy passe jargon in docs for spiffy OOP code.",
    modifiers    => "gi",  # redundant with settings in @terms
  } );  # Letting method default to 'sequential'



# If non-standard behavior is desired in locating the methods via plugins
my $filter = List::Filter::Transform->new(
  { name              => 'oop_up_docs',
    terms             => \@terms ,
    description       =>
       "Hunt and destroy passe jargon in docs for spiffy OOP code.",
    modifiers         => "g",
    method            => "reverse",
    plugin_root       => "List::Filter::Transform::Internal",
    plugin_exceptions => ["List::Filter::Transforms::NotThisOne"],

  } );

# alternately
my $filter = List::Filter::Transform->new();  # creates an empty filter

my @terms = [ [ 'find_me', 'i', 'replace_with_this' ],
              [ 'function', '', 'method' ],
              [ 'variable', '', 'attribute' ],
              [ 'Function', '', 'Method' ],
              [ 'Variable', '', 'Attribute' ],
            ];
$filter->set_name('oop_up_docs');
$filter->set_terms( \@terms );
$filter->set_method('sequential');  # typical
$filter->set_description(
          "Hunt and destroy passe jargon in docs for spiffy OOP code.");
$filter->set_modifiers( "g" ); # 'g' applied, uh, 'globally'

DESCRIPTION

A "transform" is like a List::Filter "filter" (List::Filter), except that each pattern has an associated replacement expression. A "transform" is essentially a list of perl substitutions ("s///").

At the core of a transform object is the "terms" attribute, an array of arrays of three values:

(1) a perl regular expression, (2) external match modifiers (e.g. 'g'), (3) the replacement expression to substitute for a match

Note: future versions of this code may have support for (4) (optional) a hashref of miscellanious transform attributes.

As with "filters", each transform has a "method" field which specifies how the transform will be used by default. It is expected that applying the substitutions in sequence will be used so frequently, that the default method itself defaults to "sequential".

Valid methods are defined in the List::Filter::Transforms::* modules, by default. And alternate location can be selected with the "plugins_tree" argument, and plugin modules in the tree can be selectively ignored if named in the "plugin_exceptions" array.

As of this writing, the only standard supported transform method is "sequential".

METHODS

new

Instantiates a new List::Filter::Transform object. Inherits from List::Filter.

init

Initialize object attributes and then lock them down to prevent accidental creation of new ones.

basic setters and getters

Note: these accessors are all inherited from List::Filter

name

Getter for object attribute name

set_name

Setter for object attribute set_name

method

Getter for object attribute method

set_method

Setter for object attribute set_method

description

Getter for object attribute description

set_description

Setter for object attribute set_description

terms

Getter for object attribute terms

set_terms

Setter for object attribute set_terms

modifiers

Getter for object attribute modifiers

set_modifiers

Setter for object attribute set_modifiers

dispatcher

Getter for object attribute dispatcher

set_dispatcher

Setter for object attribute set_dispatcher

SEE ALSO

List::Filter List::Filter::Project

AUTHOR

Joseph Brenner, <doom@kzsu.stanford.edu>

COPYRIGHT AND LICENSE

Copyright (C) 2007 by Joseph Brenner

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.2 or, at your option, any later version of Perl 5 you may have available.

BUGS

None reported... yet.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 210:

You forgot a '=back' before '=head1'