The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Perl::Critic::PolicyFactory - Instantiate Policy objects

DESCRIPTION

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

CONSTRUCTOR

new( -profile => $profile

Returns a reference to a new Perl::Critic::PolicyFactory object.

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

METHODS

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

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

-name is the name of a Perl::Critic::Policy subclass module. The 'Perl::Critic::Policy' 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 Policy. If -params is not defined, we will use the appropriate Policy parameters from the Perl::Critic::UserProfile.

create_all_policies()

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

SUBROUTINES

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

site_policy_names()

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

AUTHOR

Jeffrey Ryan Thalhammer <thaljef@cpan.org>

COPYRIGHT

Copyright (c) 2005-2007 Jeffrey Ryan Thalhammer. 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.