X-Git-Url: http://git.maemo.org/git/?p=dh-make-perl;a=blobdiff_plain;f=dev%2Farm%2Flibperl-critic-perl%2Flibperl-critic-perl-1.088%2Flib%2FPerl%2FCritic%2FPolicyConfig.pm;fp=dev%2Farm%2Flibperl-critic-perl%2Flibperl-critic-perl-1.088%2Flib%2FPerl%2FCritic%2FPolicyConfig.pm;h=652129283a9db8ad7da8b64b385fe4e8078065bf;hp=0000000000000000000000000000000000000000;hb=f477fa73365d491991707e7ed9217b48d6994551;hpb=da95c414033799c3a62606f299c3c00b5c77ca11 diff --git a/dev/arm/libperl-critic-perl/libperl-critic-perl-1.088/lib/Perl/Critic/PolicyConfig.pm b/dev/arm/libperl-critic-perl/libperl-critic-perl-1.088/lib/Perl/Critic/PolicyConfig.pm new file mode 100644 index 0000000..6521292 --- /dev/null +++ b/dev/arm/libperl-critic-perl/libperl-critic-perl-1.088/lib/Perl/Critic/PolicyConfig.pm @@ -0,0 +1,314 @@ +############################################################################## +# $URL: http://perlcritic.tigris.org/svn/perlcritic/trunk/Perl-Critic/lib/Perl/Critic/PolicyConfig.pm $ +# $Date: 2008-07-03 10:19:10 -0500 (Thu, 03 Jul 2008) $ +# $Author: clonezone $ +# $Revision: 2489 $ +############################################################################## + +package Perl::Critic::PolicyConfig; + +use 5.006001; +use strict; +use warnings; + +use Readonly; + +our $VERSION = '1.088'; + +use Perl::Critic::Exception::AggregateConfiguration; +use Perl::Critic::Exception::Configuration::Option::Policy::ParameterValue; +use Perl::Critic::Utils qw< :booleans :characters severity_to_number >; + +#----------------------------------------------------------------------------- + +Readonly::Scalar my $NON_PUBLIC_DATA => '_non_public_data'; +Readonly::Scalar my $NO_LIMIT => 'no_limit'; + +#----------------------------------------------------------------------------- + +sub new { + my ($class, $policy_short_name, $specification) = @_; + + my %self = $specification ? %{ $specification } : (); + my %non_public_data; + + $non_public_data{_policy_short_name} = $policy_short_name; + + foreach my $standard_parameter ( + qw< maximum_violations_per_document severity set_themes add_themes > + ) { + if ( exists $self{$standard_parameter} ) { + $non_public_data{"_$standard_parameter"} = + delete $self{$standard_parameter}; + } + } + + $self{$NON_PUBLIC_DATA} = \%non_public_data; + + + return bless \%self, $class; +} + +#----------------------------------------------------------------------------- + +sub _validate_maximum_violations_per_document { + my ($self, $errors) = @_; + + my $user_maximum_violations = + $self->get_maximum_violations_per_document(); + + if ( defined $user_maximum_violations ) { + if ( + $user_maximum_violations =~ m/$NO_LIMIT/xmsio + or $user_maximum_violations eq $EMPTY + ) { + $user_maximum_violations = undef; + } + elsif ( not is_integer($user_maximum_violations) ) { + $errors->add_exception( + new_parameter_value_exception( + 'maximum_violations_per_document', + $user_maximum_violations, + undef, + "does not look like an integer.\n" + ) + ); + + return; + } + elsif ( $user_maximum_violations < 0 ) { + $errors->add_exception( + new_parameter_value_exception( + 'maximum_violations_per_document', + $user_maximum_violations, + undef, + "is not greater than or equal to zero.\n" + ) + ); + + return; + } + + $self->set_maximum_violations_per_document( + $user_maximum_violations + ); + } + + return; +} + +#----------------------------------------------------------------------------- + +sub _get_non_public_data { + my $self = shift; + + return $self->{$NON_PUBLIC_DATA}; +} + +#----------------------------------------------------------------------------- + +sub get_policy_short_name { + my $self = shift; + + return $self->_get_non_public_data()->{_policy_short_name}; +} + +#----------------------------------------------------------------------------- + +sub get_set_themes { + my ($self) = @_; + + return $self->_get_non_public_data()->{_set_themes}; +} + +#----------------------------------------------------------------------------- + +sub get_add_themes { + my ($self) = @_; + + return $self->_get_non_public_data()->{_add_themes}; +} + +#----------------------------------------------------------------------------- + +sub get_severity { + my ($self) = @_; + + return $self->_get_non_public_data()->{_severity}; +} + +#----------------------------------------------------------------------------- + +sub is_maximum_violations_per_document_unlimited { + my ($self) = @_; + + my $maximum_violations = $self->get_maximum_violations_per_document(); + if ( + not defined $maximum_violations + or $maximum_violations eq $EMPTY + or $maximum_violations =~ m<\A $NO_LIMIT \z>xmsio + ) { + return $TRUE; + } + + return $FALSE; +} + +#----------------------------------------------------------------------------- + +sub get_maximum_violations_per_document { + my ($self) = @_; + + return $self->_get_non_public_data()->{_maximum_violations_per_document}; +} + +#----------------------------------------------------------------------------- + +sub get { + my ($self, $parameter) = @_; + + return if $parameter eq $NON_PUBLIC_DATA; + + return $self->{$parameter}; +} + +#----------------------------------------------------------------------------- + +sub remove { + my ($self, $parameter) = @_; + + return if $parameter eq $NON_PUBLIC_DATA; + + delete $self->{$parameter}; + + return; +} + +#----------------------------------------------------------------------------- + +sub is_empty { + my ($self) = @_; + + return 1 >= keys %{$self}; +} + +#----------------------------------------------------------------------------- + +sub get_parameter_names { + my ($self) = @_; + + return grep { $_ ne $NON_PUBLIC_DATA } keys %{$self}; +} + +#----------------------------------------------------------------------------- + +1; + +__END__ + +#----------------------------------------------------------------------------- + +=pod + +=for stopwords + +=head1 NAME + +Perl::Critic::PolicyConfig - Configuration data for a Policy. + + +=head1 DESCRIPTION + +A container for the configuration of a Policy. + + +=head1 METHODS + +=over + +=item C + +The name of the policy this configuration is for. Primarily here for +the sake of debugging. + + +=item C< get_set_themes() > + +The value of C in the user's F<.perlcriticrc>. + + +=item C< get_add_themes() > + +The value of C in the user's F<.perlcriticrc>. + + +=item C< get_severity() > + +The value of C in the user's F<.perlcriticrc>. + + +=item C< is_maximum_violations_per_document_unlimited() > + +Answer whether the value of C should +be considered to be unlimited. + + +=item C< get_maximum_violations_per_document() > + +The value of C in the user's +F<.perlcriticrc>. + + +=item C< get($parameter) > + +Retrieve the value of the specified parameter in the user's +F<.perlcriticrc>. + + +=item C< remove($parameter) > + +Delete the value of the specified parameter. + + +=item C< is_empty() > + +Answer whether there is any non-standard configuration information +left. + + +=item C< get_parameter_names() > + +Retrieve the names of the parameters in this object. + + +=back + + +=head1 SEE ALSO + +L + + +=head1 AUTHOR + +Elliot Shank + + +=head1 COPYRIGHT + +Copyright (c) 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 :