NAME

Perl::ToPerl6::TransformerFactory - Instantiates Transformer objects.

DESCRIPTION

This is a helper class that instantiates Perl::ToPerl6::Transformer objects with the user's preferred parameters. There are no user-serviceable parts here.

INTERFACE SUPPORT

This is considered to be a non-public class. Its interface is subject to change without notice.

CONSTRUCTOR

new( -profile => $profile, -errors => $config_errors )

Returns a reference to a new Perl::ToPerl6::TransformerFactory object.

-profile is a reference to a Perl::ToPerl6::UserProfile object. This argument is required.

-errors is a reference to an instance of Perl::ToPerl6::ConfigErrors. This argument is optional. If specified, than any problems found will be added to the object.

METHODS

create_policy( -name => $policy_name, -params => \%param_hash )

Creates one Transformer object. If the object cannot be instantiated, it will throw a fatal exception. Otherwise, it returns a reference to the new Transformer object.

-name is the name of a Perl::ToPerl6::Transformer subclass module. The 'Perl::ToPerl6::Transformer' portion of the name can be omitted for brevity. This argument is required.

-params is an optional reference to hash of parameters that will be passed into the constructor of the Transformer. If -params is not defined, we will use the appropriate Transformer parameters from the Perl::ToPerl6::UserProfile.

Note that the Transformer will not have had "initialize_if_enabled" in Perl::ToPerl6::Transformer invoked on it, so it may not yet be usable.

create_all_transformers()

Constructs and returns one instance of each Perl::ToPerl6::Transformer subclass that is installed on the local system. Each Transformer will be created with the appropriate parameters from the user's configuration profile.

Note that the Policies will not have had "initialize_if_enabled" in Perl::ToPerl6::Transformer invoked on them, so they may not yet be usable.

SUBROUTINES

Perl::ToPerl6::TransformerFactory has a few static subroutines that are used internally, but may be useful to you in some way.

topological_sort( @transformers )

Given a list of Transformer objects, reorder them into the order they need to be run. Variables::FormatSpecialVariables needs to reformat $0 before Variables::FormatMatchVariables transforms $1 into $0, for example. If you need to specify that a Transformer must be run before or after a given transformer or list of transformers, then in your Transformer create a sub run_before() and/or sub run_after() which returns a list of transformers that it must run before and/or after.

If a transformer you specified doesn't exist, your transformer code should still run, but with a warning.

site_policy_names()

Returns a list of all the Transformer modules that are currently installed in the Perl::ToPerl6:Transformer namespace. These will include modules that are distributed with Perl::ToPerl6 plus any third-party modules that have been installed.

AUTHOR

Jeffrey Goff <drforr@pobox.com>

AUTHOR EMERITUS

Jeffrey Ryan Thalhammer <jeff@imaginative-software.com>

COPYRIGHT

Copyright (c) 2015 Jeffrey Goff. 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 this license can be found in the LICENSE file included with this module.