File Coverage

blib/lib/Lingua/ZH/CCDICT/ResultItem.pm
Criterion Covered Total %
statement 26 26 100.0
branch 3 6 50.0
condition n/a
subroutine 17 17 100.0
pod 10 11 90.9
total 56 60 93.3


line stmt bran cond sub pod time code
1             package Lingua::ZH::CCDICT::ResultItem;
2              
3 1     1   6 use strict;
  1         2  
  1         34  
4 1     1   7 use warnings;
  1         1  
  1         35  
5              
6 1     1   6 use Params::Validate qw( validate SCALAR UNDEF ARRAYREF );
  1         2  
  1         103  
7 1     1   394 use Sub::Name qw( subname );
  1         3  
  1         145  
8              
9             foreach my $item ( qw( unicode radical index stroke_count cangjie four_corner ) )
10             {
11 16 50   16 1 964 my $sub = sub { return unless exists $_[0]->{$item};
        16 1    
        16 1    
        16 1    
        16 1    
        16 1    
12 16         72 $_[0]->{$item} };
13              
14             my $sub_name = __PACKAGE__ . "::$item";
15              
16 1     1   6 no strict 'refs';
  1         2  
  1         143  
17             *{$sub_name} = subname $sub_name => $sub;
18             }
19              
20             foreach my $item ( qw( jyutping pinyin pinjim english ) )
21             {
22 6 50   6 1 1155 my $sub = sub { return unless exists $_[0]->{$item};
        6 1    
        6 1    
        6 1    
23 6 50       10 wantarray ? @{ $_[0]->{$item} } : $_[0]->{$item}[0] };
  6         22  
24              
25             my $sub_name = __PACKAGE__ . "::$item";
26              
27 1     1   6 no strict 'refs';
  1         3  
  1         231  
28             *{$sub_name} = subname $sub_name => $sub;
29             }
30              
31              
32             sub new
33             {
34 32     32 0 37 my $class = shift;
35 32         1629 my %p = validate( @_,
36             { unicode => { type => SCALAR },
37             radical => { type => SCALAR },
38             index => { type => SCALAR },
39             stroke_count => { type => SCALAR, optional => 1 },
40             cangjie => { type => SCALAR, optional => 1 },
41             four_corner => { type => SCALAR, optional => 1 },
42             jyutping => { type => ARRAYREF, optional => 1 },
43             pinyin => { type => ARRAYREF, optional => 1 },
44             pinjim => { type => ARRAYREF, optional => 1 },
45             english => { type => ARRAYREF, optional => 1 },
46             },
47             );
48              
49 32         462 return bless \%p, $class;
50             }
51              
52              
53             1;
54              
55             __END__