App-Midgen
view release on metacpan or search on metacpan
lib/App/Midgen/Role/UseModule.pm view on Meta::CPAN
package App::Midgen::Role::UseModule;
use constant {BLANK => q{ }, TRUE => 1, FALSE => 0, NONE => q{}, TWO => 2,
THREE => 3,};
use Moo::Role;
requires
qw( ppi_document debug verbose format xtest _process_found_modules develop meta2 );
our $VERSION = '0.34';
$VERSION = eval $VERSION; ## no critic
use PPI;
use Data::Printer {caller_info => 1,};
use Try::Tiny;
use Tie::Static qw(static);
#######
# composed method - _xtests_in_single_quote
#######
sub xtests_use_module {
my $self = shift;
my $phase_relationship = shift || NONE;
my @modules;
my @version_strings;
# bug out if there is no Include for Module::Runtime found
return if $self->_is_module_runtime() eq FALSE;
## say 'Option 1: use_module( M::N )...';
#
# use_module("Math::BigInt", 1.31)->new("1_234");
#
#PPI::Document
# PPI::Statement
# PPI::Token::Whitespace ' '
# PPI::Token::Word 'use_module'
# PPI::Structure::List ( ... )
# PPI::Statement::Expression
# PPI::Token::Quote::Double '"Math::BigInt"'
# PPI::Token::Operator ','
# PPI::Token::Whitespace ' '
# PPI::Token::Number::Float '1.31'
# PPI::Token::Operator '->'
# PPI::Token::Word 'new'
# PPI::Structure::List ( ... )
# PPI::Statement::Expression
# PPI::Token::Quote::Double '"1_234"'
# PPI::Token::Structure ';'
# PPI::Token::Whitespace '\n'
try {
my @chunks1 = @{$self->ppi_document->find('PPI::Statement')};
foreach my $chunk (@chunks1) {
if (not $chunk->find(sub { $_[1]->isa('PPI::Token::Symbol') })) {
# test for module-runtime key-words
if (
$chunk->find(
sub {
$_[1]->isa('PPI::Token::Word')
and $_[1]->content
=~ m{\A[Module::Runtime::]*(?:use_module|use_package_optimistically|require_module)\z};
}
)
)
{
if (
not $chunk->find(
sub {
( run in 0.550 second using v1.01-cache-2.11-cpan-39bf76dae61 )