File Coverage

blib/lib/Return/DataButBool.pm
Criterion Covered Total %
statement 32 32 100.0
branch 6 6 100.0
condition n/a
subroutine 15 15 100.0
pod 3 3 100.0
total 56 56 100.0


line stmt bran cond sub pod time code
1             package Return::DataButBool;
2              
3 1     1   29125 use warnings;
  1         3  
  1         31  
4 1     1   6 use strict;
  1         1  
  1         35  
5              
6 1     1   913 use version; our $VERSION = qv('0.0.3');
  1         2976  
  1         6  
7              
8 1     1   84 use base 'Exporter';
  1         1  
  1         128  
9             our @EXPORT = qw(zero_but_true data_but_true data_but_false);
10              
11             # bring in the big guns
12 1     1   1431 use Contextual::Return;
  1         24527  
  1         8  
13              
14             sub zero_but_true {
15 1     1 1 222 return '0e0';
16             }
17              
18             sub data_but_true {
19 3     3 1 717 my $num = _get_num_from( shift() );
20 3         27 my $str = shift();
21 3 100       17 $str = $num if !defined $str;
22            
23             return (
24 2     2   567 BOOL { 1; }
25 2     2   736 NUM { $num }
26 3     3   744 STR { $str }
27 3         45 );
28             }
29              
30             sub data_but_false {
31 3     3 1 483 my $num = _get_num_from( shift() );
32 3         6 my $str = shift();
33 3 100       9 $str = $num if !defined $str;
34              
35             return (
36 2     2   561 BOOL { 0; }
37 2     2   538 NUM { $num }
38 3     3   739 STR { $str }
39 3         26 );
40             }
41              
42             # out in external num() func or something?
43             sub _get_num_from {
44 14     14   267 my ($num) = @_;
45 14 100       3137 return $num =~ m{ \A ([-+]? \d+ (?: [.] \d+ )?) \z }xms ? $1 : int($num);
46             }
47              
48             1;
49              
50             __END__