File Coverage

blib/lib/Log/ger/Format/Sprintfn.pm
Criterion Covered Total %
statement 32 34 94.1
branch 13 16 81.2
condition 3 3 100.0
subroutine 5 5 100.0
pod 0 1 0.0
total 53 59 89.8


line stmt bran cond sub pod time code
1             package Log::ger::Format::Sprintfn;
2              
3             our $DATE = '2017-08-01'; # DATE
4             our $VERSION = '0.002'; # VERSION
5              
6 1     1   101431 use strict;
  1         3  
  1         23  
7 1     1   4 use warnings;
  1         2  
  1         19  
8              
9 1     1   228 use Text::sprintfn;
  1         766  
  1         286  
10              
11             sub get_hooks {
12 1     1 0 11 my %conf = @_;
13              
14             return {
15             create_formatter => [
16             __PACKAGE__, 50,
17             sub {
18 2     2   1233 my %args = @_;
19              
20             my $formatter = sub {
21 5 100       504 return $_[0] if @_ < 2;
22 4         11 my $fmt = shift;
23 4         9 my @args;
24 4         17 for my $i (0..$#_) {
25 6 100 100     48 if ($i == 0 && ref $_[$i] eq 'HASH') {
    50          
    100          
26 2         7 my $orig = $_[$i];
27 2         5 my $dumped = {};
28 2         10 for my $k (keys %$orig) {
29 2         7 my $v = $orig->{$k};
30             # XXX code duplication'ish
31 2 50       12 if (!defined($v)) {
    100          
32 0         0 $dumped->{$k} = '';
33             } elsif (ref $v) {
34             require Log::ger::Util
35 1 50       6 unless $Log::ger::_dumper;
36 1         6 $dumped->{$k} = Log::ger::Util::_dump($v);
37             } else {
38 1         5 $dumped->{$k} = $v;
39             }
40             }
41 2         74 push @args, $dumped;
42             } elsif (!defined($_[$i])) {
43 0         0 push @args, '';
44             } elsif (ref $_[$i]) {
45 2 100       16 require Log::ger::Util unless $Log::ger::_dumper;
46 2         12 push @args, Log::ger::Util::_dump($_[$i]);
47             } else {
48 2         8 push @args, $_[$i];
49             }
50             }
51 4         3115 sprintfn $fmt, @args;
52 2         11 };
53 2         9 [$formatter];
54 1         7 }],
55             };
56             }
57              
58             1;
59             # ABSTRACT: Use Text::sprintfn for formatting instead of sprintf
60              
61             __END__