File Coverage

blib/lib/Data/Validate/WithYAML/Plugin/Country.pm
Criterion Covered Total %
statement 26 26 100.0
branch 10 10 100.0
condition 4 4 100.0
subroutine 5 5 100.0
pod 1 1 100.0
total 46 46 100.0


line stmt bran cond sub pod time code
1             package Data::Validate::WithYAML::Plugin::Country;
2              
3             # ABSTRACT: check whether a given value is a valid country code
4              
5 4     4   271828 use strict;
  4         33  
  4         117  
6 4     4   22 use warnings;
  4         9  
  4         95  
7              
8 4     4   20 use Carp;
  4         9  
  4         303  
9 4     4   2199 use Locale::Country::Multilingual;
  4         16945  
  4         19  
10              
11             our $VERSION = 0.03;
12              
13             sub check {
14 39     39 1 18123 my ($class, $value, $conf) = @_;
15              
16 39   100     149 $conf->{format} ||= 'alpha-2';
17              
18 39 100       141 if ( $conf->{format} eq 'alpha-2' ) {
    100          
19 16 100       47 if ( length $value != 2 ) {
20 6         20 carp "value is not in alpha-2 format";
21 6         22 return;
22             }
23             }
24             elsif ( $conf->{format} eq 'alpha-3' ) {
25 14 100       41 if ( length $value != 3 ) {
26 4         22 carp "value is not in alpha-3 format";
27 4         18 return;
28             }
29             }
30             else {
31 9         33 croak "unsupported format " . $conf->{format};
32             }
33              
34             my $lcm = Locale::Country::Multilingual->new(
35 29   100     203 lang => $conf->{lang} || 'en',
36             use_io_layer => 1,
37             );
38              
39 29 100       395 if ( $lcm->code2country( $value ) ) {
40 17         127696 return 1;
41             }
42              
43 12         390 return;
44             }
45              
46             1;
47              
48             __END__