File Coverage

blib/lib/Data/Printer/Filter.pm
Criterion Covered Total %
statement 31 31 100.0
branch 1 2 50.0
condition 2 6 33.3
subroutine 9 9 100.0
pod n/a
total 43 48 89.5


line stmt bran cond sub pod time code
1             package Data::Printer::Filter;
2 35     35   239 use strict;
  35         73  
  35         1131  
3 35     35   201 use warnings;
  35         66  
  35         903  
4 35     35   226 use Data::Printer::Common;
  35         67  
  35         1376  
5 35     35   247 use Scalar::Util;
  35         87  
  35         7128  
6              
7             sub import {
8 389     389   1050 my $caller = caller;
9              
10 389         755 my %_filters_for = ();
11             my $filter = sub {
12 461     461   1401 my ($name, $code) = @_;
13 461 50 33     3800 Data::Printer::Common::_die( "syntax: filter 'Class', sub { ... }" )
      33        
14             unless defined $name
15             && defined $code
16             && Scalar::Util::reftype($code) eq 'CODE';
17              
18 461         1323 my $target = Data::Printer::Common::_filter_category_for($name);
19 461         3302 unshift @{$_filters_for{$target}{$name}}, sub {
20 639     639   1187 my ($item, $ddp) = @_;
21 639         1971 $code->($item, $ddp);
22 461         778 };
23 389         1911 };
24              
25             {
26 35     35   273 no strict 'refs';
  35         90  
  35         3727  
  389         767  
27 389         561 *{"$caller\::filter"} = $filter;
  389         2143  
28 389     2732   1337 *{"$caller\::_filter_list"} = sub { \%_filters_for };
  389         16499  
  2732         6309  
29             }
30             };
31              
32             1;
33             __END__