File Coverage

blib/lib/Business/BR/Ids.pm
Criterion Covered Total %
statement 23 27 85.1
branch 2 4 50.0
condition n/a
subroutine 7 11 63.6
pod 2 5 40.0
total 34 47 72.3


line stmt bran cond sub pod time code
1            
2             package Business::BR::Ids;
3            
4 1     1   46100 use 5;
  1         4  
  1         54  
5 1     1   6 use strict;
  1         3  
  1         45  
6 1     1   6 use warnings;
  1         1  
  1         125  
7            
8             require Exporter;
9             our @ISA = qw(Exporter);
10             our @EXPORT_OK = qw( canon_id parse_id format_id random_id );
11             our @EXPORT = qw( test_id );
12            
13             our $VERSION = '0.0022';
14             $VERSION = eval $VERSION;
15            
16 1     1   6 use Carp;
  1         2  
  1         217  
17            
18             # a hash from entity types to packages
19             my %types = (
20             cpf => 'Business::BR::CPF',
21             cnpj => 'Business::BR::CNPJ',
22             ie => 'Business::BR::IE',
23             pis => 'Business::BR::PIS',
24             );
25            
26            
27             # invoke($type, $subroot, @args)
28             sub _invoke {
29 6     6   420 my $type = lc shift;
30 6         14 my $subroot = shift;
31 6 50       29 my $package = $types{$type}
32             or croak "unknown '$type'\n";
33 6         3822 eval "require $package";
34 6 50       42 croak $@ if $@;
35 1     1   6 no strict 'refs';
  1         3  
  1         2268  
36 6         15 return &{"${package}::${subroot}${type}"}(@_);
  6         48  
37             }
38            
39             sub test_id {
40 6     6 1 35 return _invoke(shift, 'test_', @_);
41             }
42            
43             sub canon_id {
44 0     0 1   return _invoke(shift, 'canon_', @_);
45             }
46            
47             sub format_id {
48 0     0 0   return _invoke(shift, 'format_', @_);
49             }
50            
51             sub parse_id {
52 0     0 0   return _invoke(shift, 'parse_', @_);
53             }
54            
55             sub random_id {
56 0     0 0   return _invoke(shift, 'random_', @_);
57             }
58            
59             1;
60            
61             __END__