X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;ds=sidebyside;f=dev%2Farm%2Flibperl-critic-perl%2Flibperl-critic-perl-1.088%2Flib%2FPerl%2FCritic%2FPolicyParameter%2FBehavior%2FStringList.pm;fp=dev%2Farm%2Flibperl-critic-perl%2Flibperl-critic-perl-1.088%2Flib%2FPerl%2FCritic%2FPolicyParameter%2FBehavior%2FStringList.pm;h=b91b4d02280f02b303cea36303df2e9c2f3ef2f4;hb=f477fa73365d491991707e7ed9217b48d6994551;hp=0000000000000000000000000000000000000000;hpb=da95c414033799c3a62606f299c3c00b5c77ca11;p=dh-make-perl diff --git a/dev/arm/libperl-critic-perl/libperl-critic-perl-1.088/lib/Perl/Critic/PolicyParameter/Behavior/StringList.pm b/dev/arm/libperl-critic-perl/libperl-critic-perl-1.088/lib/Perl/Critic/PolicyParameter/Behavior/StringList.pm new file mode 100644 index 0000000..b91b4d0 --- /dev/null +++ b/dev/arm/libperl-critic-perl/libperl-critic-perl-1.088/lib/Perl/Critic/PolicyParameter/Behavior/StringList.pm @@ -0,0 +1,165 @@ +############################################################################## +# $URL: http://perlcritic.tigris.org/svn/perlcritic/trunk/Perl-Critic/lib/Perl/Critic/PolicyParameter/Behavior/StringList.pm $ +# $Date: 2008-07-03 10:19:10 -0500 (Thu, 03 Jul 2008) $ +# $Author: clonezone $ +# $Revision: 2489 $ +############################################################################## + +package Perl::Critic::PolicyParameter::Behavior::StringList; + +use 5.006001; +use strict; +use warnings; + +use Perl::Critic::Utils qw{ :characters &words_from_string &hashify }; + +use base qw{ Perl::Critic::PolicyParameter::Behavior }; + +our $VERSION = '1.088'; + +#----------------------------------------------------------------------------- + +sub initialize_parameter { + my ($self, $parameter, $specification) = @_; + + # Unfortunately, this has to be kept as a reference, rather than a regular + # array, due to a problem in Devel::Cycle + # (http://rt.cpan.org/Ticket/Display.html?id=25360) which causes + # t/92_memory_leaks.t to fall over. + my $always_present_values = $specification->{list_always_present_values}; + $parameter->_get_behavior_values()->{always_present_values} = + $always_present_values; + + if ( not $always_present_values ) { + $always_present_values = []; + } + + $parameter->_set_parser( + sub { + # Normally bad thing, obscuring a variable in a outer scope + # with a variable with the same name is being done here in + # order to remain consistent with the parser function interface. + my ($policy, $parameter, $config_string) = @_; + + my @values = @{$always_present_values}; + my $value_string = $parameter->get_default_string(); + + if (defined $config_string) { + $value_string = $config_string; + } + + if ( defined $value_string ) { + push @values, words_from_string($value_string); + } + + my %values = hashify(@values); + + $policy->__set_parameter_value($parameter, \%values); + + return; + } + ); + + return; +} + +#----------------------------------------------------------------------------- + +sub generate_parameter_description { + my ($self, $parameter) = @_; + + my $always_present_values = + $parameter->_get_behavior_values()->{always_present_values}; + + my $description = $parameter->_get_description_with_trailing_period(); + if ( $description and $always_present_values ) { + $description .= qq{\n}; + } + + if ( $always_present_values ) { + $description .= 'Values that are always included: '; + $description .= join ', ', sort @{ $always_present_values }; + $description .= $PERIOD; + } + + return $description; +} + +1; + +__END__ + +#----------------------------------------------------------------------------- + +=pod + +=for stopwords + +=head1 NAME + +Perl::Critic::PolicyParameter::Behavior::StringList - Actions appropriate for a parameter that is a list of strings. + +NOTE: Do not instantiate this class. Use the singleton instance held +onto by L. + + +=head1 DESCRIPTION + +Provides a standard set of functionality for a string list +L so that the developer of a policy +does not have to provide it her/himself. + + +=head1 METHODS + +=over + +=item C + +Plug in the functionality this behavior provides into the parameter, +based upon the configuration provided by the specification. + +This behavior looks for one configuration item: + +=over + +=item always_present_values + +Optional. Values that should always be included, regardless of what +the configuration of the parameter specifies, as an array reference. + +=back + +=item C + +Create a description of the parameter, based upon the description on +the parameter itself, but enhancing it with information from this +behavior. + +In this specific case, the always present values are added at the end. + +=back + + +=head1 AUTHOR + +Elliot Shank + +=head1 COPYRIGHT + +Copyright (c) 2006-2008 Elliot Shank. 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. + +=cut + +# Local Variables: +# mode: cperl +# cperl-indent-level: 4 +# fill-column: 78 +# indent-tabs-mode: nil +# c-indentation-style: bsd +# End: +# ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :