view release on metacpan or search on metacpan
local/lib/perl5/Module/Build/Base.pm view on Meta::CPAN
return {} unless -d $dir;
return { map {$_, $_}
map $self->localize_file_path($_),
grep !/\.\#/,
@{ $self->rscan_dir($dir, $self->file_qr("\\.$type\$")) } };
}
sub localize_file_path {
my ($self, $path) = @_;
return File::Spec->catfile( split m{/}, $path );
}
sub localize_dir_path {
my ($self, $path) = @_;
return File::Spec->catdir( split m{/}, $path );
}
sub fix_shebang_line { # Adapted from fixin() in ExtUtils::MM_Unix 1.35
my ($self, @files) = @_;
my $c = ref($self) ? $self->{config} : 'Module::Build::Config';
my ($does_shbang) = $c->get('sharpbang') =~ /^\s*\#\!/;
for my $file (@files) {
open(my $FIXIN, '<', $file) or die "Can't process '$file': $!";
local $/ = "\n";
local/lib/perl5/PPI/Token/Number/Exp.pm view on Meta::CPAN
=head2 literal
Return the numeric value of this token.
=cut
sub literal {
my $self = shift;
return if $self->{_error};
my ($mantissa, $exponent) = split m/e/i, $self->_literal;
my $neg = $mantissa =~ s/^\-//;
$mantissa =~ s/^\./0./;
$exponent =~ s/^\+//;
# Must cast exponent as numeric type, due to string type '00' exponent
# creating false positive condition in for() loop below, causing infinite loop
$exponent += 0;
# This algorithm is reasonably close to the S_mulexp10()
# algorithm from the Perl source code, so it should arrive
local/lib/perl5/Perl/Critic/Annotation.pm view on Meta::CPAN
#
#############################################################################
my @disabled_policy_names;
if ( my ($patterns_string) = $annotation_element =~ $no_critic ) {
# Compose the specified modules into a regex alternation. Wrap each
# in a no-capturing group to permit "|" in the modules specification.
my @policy_name_patterns = grep { $_ ne $EMPTY }
split m{\s *[,\s] \s*}xms, $patterns_string;
my $re = join $PIPE, map {"(?:$_)"} @policy_name_patterns;
my @site_policy_names = Perl::Critic::PolicyFactory::site_policy_names();
@disabled_policy_names = grep {m/$re/ixms} @site_policy_names;
# It is possible that the Policy patterns listed in the annotation do not
# match any of the site policy names. This could happen when running
# on a machine that does not have the same set of Policies as the author.
# So we must return something here, otherwise all Policies will be
# disabled. We probably need to add a mechanism to (optionally) warn
# about this, just to help the author avoid writing invalid Policy names.
local/lib/perl5/Perl/Critic/Policy/BuiltinFunctions/ProhibitStringySplit.pm view on Meta::CPAN
=head1 DESCRIPTION
The C<split> function always interprets the PATTERN argument as a
regular expression, even if you specify it as a string. This causes
much confusion if the string contains regex metacharacters. So for
clarity, always express the PATTERN argument as a regex.
$string = 'Fred|Barney';
@names = split '|', $string; #not ok, is ('F', 'r', 'e', 'd', '|', 'B', 'a' ...)
@names = split m/[|]/, $string; #ok, is ('Fred', Barney')
When the PATTERN is a single space the C<split> function has special
behavior, so Perl::Critic forgives that usage. See C<"perldoc -f
split"> for more information.
=head1 CONFIGURATION
This Policy is not configurable except for the standard options.
local/lib/perl5/Perl/Critic/Policy/Documentation/RequirePodSections.pm view on Meta::CPAN
sub default_severity { return $SEVERITY_LOW }
sub default_themes { return qw(core pbp maintenance) }
sub applies_to { return 'PPI::Document' }
#-----------------------------------------------------------------------------
sub _parse_sections {
my $config_string = shift;
my @sections = split m{ \s* [|] \s* }xms, $config_string;
return map { uc } @sections; # Normalize CaSe!
}
sub _parse_lib_sections {
my ($self, $parameter, $config_string) = @_;
if ( defined $config_string ) {
$self->{_lib_sections} = [ _parse_sections( $config_string ) ];
}
local/lib/perl5/Perl/Critic/Policy/Modules/RequireFilenameMatchesPackage.pm view on Meta::CPAN
#-----------------------------------------------------------------------------
sub violates {
my ($self, $elem, $doc) = @_;
# 'Foo::Bar' -> ('Foo', 'Bar')
my $pkg_node = $doc->find_first('PPI::Statement::Package');
return if not $pkg_node;
my $pkg = $pkg_node->namespace();
return if $pkg eq 'main';
my @pkg_parts = split m/(?:\'|::)/xms, $pkg;
# 'lib/Foo/Bar.pm' -> ('lib', 'Foo', 'Bar')
my $filename = $pkg_node->logical_filename() || $doc->filename();
return if not $filename;
my @path = File::Spec->splitpath($filename);
$filename = $path[2];
$filename =~ s/ [.] \w+ \z //xms;
my @path_parts =
local/lib/perl5/Perl/Critic/Policy/NamingConventions/Capitalization.pm view on Meta::CPAN
return $self->_check_capitalization(
symbol_without_sigil($name), $name, 'constant', $elem,
);
}
sub _package_capitalization {
my ($self, $elem) = @_;
my $namespace = $elem->namespace();
my @components = split m/::/xms, $namespace;
foreach my $component (@components) {
my $violation =
$self->_check_capitalization(
$component, $namespace, 'package', $elem,
);
return $violation if $violation;
}
return;
local/lib/perl5/Perl/Critic/Policy/ValuesAndExpressions/ProhibitMagicNumbers.pm view on Meta::CPAN
sub _determine_allowed_values {
my ($config_string) = @_;
my @allowed_values;
my @potential_allowed_values;
my $all_integers_allowed = 0;
if ( defined $config_string ) {
my @allowed_values_strings =
grep {$_} split m/\s+/xms, $config_string;
foreach my $value_string (@allowed_values_strings) {
if ($value_string eq 'all_integers') {
$all_integers_allowed = 1;
} elsif ( $value_string =~ m/ \A $SIGNED_NUMBER \z /xms ) {
push @potential_allowed_values, $value_string + 0;
} elsif ( $value_string =~ m/$RANGE/xms ) {
my ( $minimum, $maximum, $increment ) = ($1, $2, $3);
$increment ||= 1;
local/lib/perl5/Perl/Critic/PolicyFactory.pm view on Meta::CPAN
#-----------------------------------------------------------------------------
# Some static helper subs
sub _modules_from_blib {
my (@modules) = @_;
return grep { _was_loaded_from_blib( _module2path($_) ) } @modules;
}
sub _module2path {
my $module = shift || return;
return File::Spec::Unix->catdir(split m/::/xms, $module) . '.pm';
}
sub _was_loaded_from_blib {
my $path = shift || return;
my $full_path = $INC{$path};
return $full_path && $full_path =~ m/ (?: \A | \b b ) lib \b /xms;
}
#-----------------------------------------------------------------------------
local/lib/perl5/Perl/Critic/TestUtils.pm view on Meta::CPAN
}
}
return $subtest;
}
sub bundled_policy_names {
require ExtUtils::Manifest;
my $manifest = ExtUtils::Manifest::maniread();
my @policy_paths = map {m{\A lib/(Perl/Critic/Policy/.*).pm \z}xms} keys %{$manifest};
my @policies = map { join q{::}, split m{/}xms } @policy_paths;
my @sorted_policies = sort @policies;
return @sorted_policies;
}
sub names_of_policies_willing_to_work {
my %configuration = @_;
my @policies_willing_to_work =
Perl::Critic::Config
->new( %configuration )
local/lib/perl5/Perl/Tidy/Tokenizer.pm view on Meta::CPAN
warn
write
);
@is_keyword_taking_optional_arg{@keywords_taking_optional_arg} =
(1) x scalar(@keywords_taking_optional_arg);
# This list is used to decide if a pattern delimited by question marks,
# ?pattern?, can follow one of these keywords. Note that from perl 5.22
# on, a ?pattern? is not recognized, so we can be much more strict than
# with a /pattern/. Note that 'split' is not in this list. In current
# versions of perl a question following split must be a ternary, but
# in older versions it could be a pattern. The guessing algorithm will
# decide. We are combining two lists here to simplify the test.
@q = ( @keywords_taking_optional_arg, @operator_requestor );
@is_keyword_rejecting_question_as_pattern_delimiter{@q} =
(1) x scalar(@q);
# These are not used in any way yet
# my @unused_keywords = qw(
# __FILE__
# __LINE__
local/lib/perl5/Test/Perl/Critic/Policy.pm view on Meta::CPAN
# If any optional modules are NOT available, then there should be no violations.
return 0 if not _all_optional_modules_are_available($subtest);
return $subtest->{failures};
}
#-----------------------------------------------------------------------------
sub _all_optional_modules_are_available {
my ($subtest) = @_;
my $optional_modules = $subtest->{optional_modules} or return 1;
return all {eval "require $_;" or 0;} split m/,\s*/xms, $optional_modules;
}
#-----------------------------------------------------------------------------
sub _create_test_name {
my ($policy, $subtest) = @_;
return join ' - ', $policy, "line $subtest->{lineno}", $subtest->{name};
}
#-----------------------------------------------------------------------------