File Coverage

blib/lib/CLDR/Number/Format/Percent.pm
Criterion Covered Total %
statement 29 29 100.0
branch 4 4 100.0
condition n/a
subroutine 7 7 100.0
pod 1 1 100.0
total 41 41 100.0


line stmt bran cond sub pod time code
1             package CLDR::Number::Format::Percent;
2              
3 8     8   125 use v5.8.1;
  8         25  
4 8     8   41 use utf8;
  8         15  
  8         67  
5 8     8   194 use Carp;
  8         14  
  8         677  
6 8     8   42 use CLDR::Number::Constant qw( $P );
  8         13  
  8         938  
7              
8 8     8   40 use Moo;
  8         20  
  8         68  
9 8     8   3051 use namespace::clean;
  8         18  
  8         70  
10              
11             our $VERSION = '0.15';
12              
13             with qw( CLDR::Number::Role::Format );
14              
15             has permil => (
16             is => 'rw',
17             coerce => sub { $_[0] ? 1 : 0 },
18             default => 0,
19             );
20              
21             has percent_sign => (
22             is => 'rw',
23             );
24              
25             has permil_sign => (
26             is => 'rw',
27             );
28              
29             has _pattern_type => (
30             is => 'ro',
31             default => 'percent',
32             );
33              
34             after _trigger_locale => sub {
35             my ($self) = @_;
36              
37             $self->_build_signs(qw{ percent_sign permil_sign });
38             };
39              
40             sub BUILD {}
41              
42             sub format {
43 18     18 1 512 my ($self, $num) = @_;
44 18         27 my ($factor, $sign);
45              
46 18         73 $num = $self->_validate_number(format => $num);
47 18 100       147 return undef unless defined $num;
48              
49 17 100       263 if ($self->permil) {
50 3         1046 $factor = 1_000;
51 3         9 $sign = $self->permil_sign;
52             }
53             else {
54 14         3108 $factor = 100;
55 14         48 $sign = $self->percent_sign;
56             }
57              
58 17         82 my $format = $self->_format_number($num * $factor);
59 17         133 $format =~ s{$P}{$sign};
60              
61 17         87 return $format;
62             }
63              
64             1;
65              
66             __END__