File Coverage

blib/lib/Data/Sah/Format/perl/boolstr.pm
Criterion Covered Total %
statement 26 27 96.3
branch 5 8 62.5
condition 4 4 100.0
subroutine 5 5 100.0
pod 0 1 0.0
total 40 45 88.8


line stmt bran cond sub pod time code
1             package Data::Sah::Format::perl::boolstr;
2              
3             our $DATE = '2016-06-14'; # DATE
4             our $VERSION = '0.001'; # VERSION
5              
6 1     1   1263 use 5.010001;
  1         2  
7 1     1   4 use strict;
  1         1  
  1         18  
8 1     1   3 use warnings;
  1         0  
  1         71  
9              
10 1     1   420 use Data::Dmp;
  1         1214  
  1         209  
11              
12             our $styles = {
13             yes_no => ['yes', 'no'],
14             Y_N => ['Y', 'N'],
15             true_false => ['true', 'false'],
16             T_F => ['T', 'F'],
17             '1_0' => ['1', '0'],
18             on_off => ['on', 'off'],
19             };
20              
21             sub format {
22 7     7 0 10239 my %args = @_;
23              
24 7         7 my $dt = $args{data_term};
25 7   100     18 my $fargs = $args{args} // {};
26              
27 7         6 my ($true_str, $false_str);
28 7 100       16 if (defined $fargs->{true_str}) {
    50          
29             die "BUG: both true_str and false_str must be defined"
30 1 50       3 unless defined $fargs->{false_str};
31 1         2 $true_str = $fargs->{true_str};
32 1         1 $false_str = $fargs->{false_str};
33             } elsif (defined $fargs->{false_str}) {
34 0         0 die "BUG: both true_str and false_str must be defined";
35             } else {
36 6   100     10 my $style = $fargs->{style} // 'yes_no';
37 6 50       13 $styles->{$style} or die "BUG: Unknown style '$style'";
38 6         7 $true_str = $styles->{$style}[0];
39 6         6 $false_str = $styles->{$style}[1];
40             }
41              
42 7         7 my $res = {};
43              
44 7         18 $res->{expr} = join(
45             "",
46             "!defined($dt) ? $dt : $dt ? ".dmp($true_str)." : ".dmp($false_str),
47             );
48              
49 7         216 $res;
50             }
51              
52             1;
53             # ABSTRACT: Format boolean as yes/no, etc
54              
55             __END__