The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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, -policy_names => \@policy_names )

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

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

-policy_names is a reference to an array of fully-qualified Policy names. Internally, the PolicyFactory will create one instance each of the named Policies.

METHODS

create_policy( -policy => $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.

-policy 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.

policies()

Returns a list of of references to all the Perl::Critic::Policy objects that were created by this PolicyFactory.

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.

native_policy_names()

Returns a list of all the Policy modules that have been distributed with Perl::Critic. Does not include any third-party modules.

AUTHOR

Jeffrey Ryan Thalhammer <thaljef@cpan.org>

COPYRIGHT

Copyright (c) 2005-2006 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.