File Coverage

blib/lib/PPIx/EditorTools/RenamePackage.pm
Criterion Covered Total %
statement 25 25 100.0
branch 4 6 66.6
condition 1 3 33.3
subroutine 7 7 100.0
pod 1 1 100.0
total 38 42 90.4


line stmt bran cond sub pod time code
1             package PPIx::EditorTools::RenamePackage;
2             our $AUTHORITY = 'cpan:YANICK';
3             # ABSTRACT: Change the package name
4             $PPIx::EditorTools::RenamePackage::VERSION = '0.21';
5 3     3   170887 use strict;
  3         13  
  3         79  
6              
7             BEGIN {
8 3     3   49 $^W = 1;
9             }
10 3     3   13 use base 'PPIx::EditorTools';
  3         9  
  3         548  
11              
12 3     3   32 use Class::XSAccessor accessors => { 'replacement' => 'replacement' };
  3         8  
  3         16  
13              
14 3     3   469 use PPI;
  3         6  
  3         54  
15 3     3   13 use Carp;
  3         6  
  3         456  
16              
17              
18             sub rename {
19 6     6 1 1555 my ( $self, %args ) = @_;
20 6         27 $self->process_doc(%args);
21 6   33     17 my $replacement = $args{replacement} || croak "replacement required";
22              
23 6         10 my $doc = $self->ppi;
24              
25             # TODO: support MooseX::Declare
26 6 100       30 my $package = $doc->find_first('PPI::Statement::Package')
27             or die "no package found";
28 5 50       825 my $namespace = $package->schild(1) or croak "package name not found";
29 5 50       78 $namespace->isa('PPI::Token::Word') or croak "package name not found";
30 5         10 $namespace->{content} = $replacement;
31              
32 5         22 return PPIx::EditorTools::ReturnObject->new(
33             ppi => $doc,
34             element => $package
35             );
36             }
37              
38             1;
39              
40             __END__