| line |
true |
false |
branch |
|
29
|
0 |
30 |
if ref $class |
|
30
|
0 |
30 |
if @_ > 2 |
|
33
|
3 |
27 |
if (defined $args) |
|
34
|
0 |
3 |
if ref $args ne 'HASH' |
|
37
|
0 |
3 |
unless (exists $accepted_option{$k}) |
|
40
|
3 |
0 |
if ($k eq 'N/A') |
|
47
|
0 |
30 |
unless (defined @{$class . '::features';}) |
|
53
|
0 |
30 |
unless (@features) |
|
69
|
1 |
109 |
unless (exists $$feature{'name'}) |
|
73
|
1 |
108 |
if (exists $feat_named{$name}) |
|
82
|
2 |
297 |
unless (exists $supported_option{$_}) |
|
83
|
1 |
1 |
if (exists $accepted_option{$_}) { } |
|
94
|
4 |
103 |
if (exists $$feature{'postproc'} and ref $$feature{'postproc'} ne 'CODE') |
|
100
|
3 |
1 |
if ($@ =~ /Undefined subroutine/) { } |
|
|
0 |
1 |
elsif ($@ =~ /^Undefined subroutine/) { } |
|
103
|
2 |
1 |
if (defined $package_name and length $package_name > 0) { } |
|
108
|
0 |
2 |
if ($@) |
|
119
|
0 |
3 |
if ($@ =~ /^Undefined subroutine/) |
|
130
|
29 |
78 |
if (exists $$feature{'values'}) |
|
131
|
1 |
28 |
if (exists $$feature{'values_file'}) |
|
135
|
4 |
24 |
if (ref $values eq 'HASH') { } |
|
|
24 |
0 |
elsif (ref $values eq 'ARRAY') { } |
|
144
|
0 |
0 |
if (ref $values) { } |
|
154
|
4 |
102 |
if (exists $$feature{'values_file'}) |
|
157
|
4 |
0 |
unless ($opened) |
|
158
|
0 |
4 |
unless open $values_fh, '<' . $OPEN_OPTIONS, $$self{'caller_path'} . '/' . $values_fn |
|
173
|
13 |
93 |
if (exists $$feature{'range'}) |
|
174
|
2 |
11 |
if (exists $$feature{'values'}) |
|
177
|
1 |
10 |
unless $$feature{'range'} =~ /^ (.+?) \s* \.{2,} \s* (.+) $/x |
|
181
|
1 |
9 |
unless ($l < $r) |
|
185
|
7 |
2 |
if ($$feature{'type'} =~ /^int/i) { } |
|
|
2 |
0 |
elsif ($$feature{'type'} =~ /^num/i) { } |
|
195
|
14 |
88 |
if (exists $$feature{'default'}) |
|
196
|
0 |
1 |
unless (exists $$feature{'values'} or exists $$feature{'range_l'}) |
|
201
|
41 |
61 |
if (exists $$feature{'type'}) |
|
204
|
0 |
41 |
unless ($type_OK) |
|
210
|
15 |
26 |
if ($type eq 'boo') { } |
|
|
14 |
12 |
elsif ($type eq 'int') { } |
|
|
9 |
3 |
elsif ($type eq 'num') { } |
|
211
|
5 |
10 |
if (exists $$feature{'values'}) { } |
|
212
|
5 |
0 |
exists $$feature{'values_ordered'} ? : |
|
213
|
1 |
4 |
if (@values > 2) |
|
220
|
4 |
3 |
if ($_) { } |
|
221
|
1 |
3 |
if (defined $true) |
|
227
|
1 |
2 |
if (defined $false) |
|
232
|
3 |
2 |
$_ ? : |
|
234
|
2 |
0 |
if (exists $$feature{'values_ordered'}) |
|
243
|
2 |
10 |
if (exists $$feature{'default'}) |
|
246
|
1 |
1 |
if (@vals > 1) |
|
249
|
1 |
0 |
unless ($def xor $vals[0]) |
|
250
|
1 |
0 |
$def ? : |
|
253
|
0 |
0 |
$def ? : |
|
257
|
7 |
7 |
if (exists $$feature{'values'}) |
|
258
|
7 |
0 |
exists $$feature{'values_ordered'} ? : |
|
263
|
7 |
0 |
if (exists $$feature{'values_ordered'}) |
|
268
|
1 |
13 |
if (exists $$feature{'default'}) |
|
274
|
0 |
9 |
if (exists $$feature{'values'}) |
|
275
|
0 |
0 |
exists $$feature{'values_ordered'} ? : |
|
279
|
0 |
0 |
if (exists $$feature{'values_ordered'}) |
|
284
|
1 |
8 |
if (exists $$feature{'default'}) |
|
290
|
9 |
88 |
if (exists $$feature{'format'}) |
|
292
|
1 |
8 |
unless ($format =~ /^ (?: normal | numeric | binary ) $/x) |
|
295
|
1 |
7 |
if (not exists $$feature{'values'} and $format eq 'binary') |
|
303
|
46 |
49 |
if (exists $$feature{'code'}) { } |
|
|
1 |
48 |
elsif (%{$class . '::features';} and exists ${$class . '::features';}{$name}) { } |
|
305
|
0 |
46 |
if (ref $code ne 'CODE') |
|
311
|
0 |
1 |
if (ref $code ne 'CODE') |
|
317
|
0 |
48 |
if (ref $code ne 'CODE') |
|
323
|
23 |
72 |
if (exists $$feature{'label'}) |
|
325
|
13 |
10 |
if (ref $label eq 'ARRAY') { } |
|
|
0 |
10 |
elsif (ref $label) { } |
|
342
|
105 |
89 |
if (not ref $featnames and exists $$self{'expand_names_cache'}{$featnames}) |
|
349
|
4 |
85 |
if ($featnames eq 'ALL') { } |
|
|
50 |
35 |
elsif (ref $featnames eq 'ARRAY') { } |
|
|
10 |
25 |
elsif (not $featnames =~ /[[:lower:]]/ and $featnames =~ /[[:upper:]]/) { } |
|
361
|
3 |
7 |
if (@plus_labels == 0 and @minus_labels > 0) |
|
364
|
1 |
9 |
if (grep {$_ eq 'ALL';} @minus_labels) |
|
370
|
160 |
31 |
unless $_ eq 'ALL' |
|
372
|
62 |
65 |
if $included and not $excluded |
|
379
|
38 |
50 |
unless (ref $orig_featnames) |
|
389
|
112 |
52 |
if (exists $$self{'evaluate_featnames_cache'}{"@$featnames"}) { } |
|
395
|
0 |
145 |
unless (exists $feat_named{$featname}) |
|
403
|
1 |
163 |
unless (exists $KNOWN_FORMATS{$format}) |
|
410
|
0 |
161 |
if (@args == 0) |
|
422
|
115 |
555 |
exists $$feature{'format'} ? : |
|
424
|
145 |
525 |
if (not defined $normrv and exists $$self{'N/A'}) { } |
|
426
|
41 |
104 |
if (exists $$feature{'type'} and $$feature{'type'} eq 'boo') { } |
|
|
45 |
59 |
elsif ($format eq 'binary') { } |
|
432
|
0 |
45 |
unless (@dummy) |
|
446
|
5 |
520 |
if ($@) |
|
447
|
4 |
1 |
if (ref $@ and $@->isa('Data::FeatureFactory::SoftError')) { } |
|
469
|
374 |
712 |
if (exists $$feature{'type'}) |
|
471
|
185 |
189 |
if ($type eq 'num' or $type eq 'int') |
|
474
|
158 |
216 |
if ($type eq 'int') |
|
477
|
136 |
238 |
if ($type eq 'boo') |
|
478
|
30 |
106 |
$normrv ? : |
|
483
|
834 |
252 |
if (exists $$feature{'values'}) { } |
|
|
20 |
232 |
elsif (exists $$feature{'range_l'}) { } |
|
484
|
523 |
311 |
if (exists $$feature{'values'}{$normrv}) { } |
|
|
307 |
4 |
elsif (exists $$feature{'default'}) { } |
|
495
|
0 |
20 |
unless (exists $$feature{'range_r'}) |
|
498
|
0 |
20 |
if ($normrv < $$feature{'range_l'}) |
|
499
|
0 |
0 |
if (exists $$feature{'default'}) { } |
|
508
|
1 |
19 |
if ($normrv > $$feature{'range_r'}) |
|
509
|
1 |
0 |
if (exists $$feature{'default'}) { } |
|
520
|
425 |
657 |
if ($format eq 'normal') { } |
|
|
414 |
243 |
elsif ($format eq 'numeric') { } |
|
|
243 |
0 |
elsif ($format eq 'binary') { } |
|
521
|
101 |
324 |
if (exists $$feature{'postproc'}) |
|
527
|
143 |
271 |
if (exists $$feature{'type'} and $$feature{'type'} =~ /^( num | int | boo )$/x) { } |
|
|
219 |
52 |
elsif (exists $$feature{'cat2num'}) { } |
|
531
|
0 |
219 |
unless (exists $$feature{'cat2num'}{$normrv}) |
|
538
|
52 |
0 |
if (exists $$feature{'cat2num_dyna'}{$normrv}) { } |
|
546
|
0 |
0 |
if (exists $$feature{'postproc'}) |
|
551
|
0 |
0 |
unless print {$$feature{'num_values_fh'};} join("\t", @toprint) . "\n" |
|
559
|
39 |
204 |
if (exists $$feature{'type'} and $$feature{'type'} eq 'boo') { } |
|
|
0 |
204 |
elsif (not exists $$feature{'cat2bin'}{$normrv}) { } |
|
578
|
242 |
2 |
if (exists $$feature{'values_ordered'}) { } |
|
|
2 |
0 |
elsif (exists $$feature{'values'}) { } |
|
587
|
41 |
203 |
if (exists $$feature{'default'} and not exists $$feature{'values'}{$$feature{'default'}}) |
|
595
|
1049 |
0 |
if ref $class |
|
596
|
211 |
838 |
if (exists $$feature{'format'} and $format ne 'postprocd') |
|
600
|
486 |
563 |
if (lc $format eq 'normal') { } |
|
|
279 |
284 |
elsif (lc $format eq 'numeric') { } |
|
|
273 |
11 |
elsif (lc $format eq 'binary') { } |
|
|
11 |
0 |
elsif ($format eq 'postprocd') { } |
|
603
|
17 |
262 |
if exists $$feature{'type'} and $$feature{'type'} eq 'num' |
|
604
|
69 |
193 |
if exists $$feature{'type'} and $$feature{'type'} eq 'int' |
|
605
|
53 |
140 |
if exists $$feature{'type'} and $$feature{'type'} eq 'boo' |
|
606
|
102 |
38 |
if exists $$feature{'cat2num'} |
|
608
|
28 |
10 |
if (not exists $$feature{'values'}) { } |
|
609
|
25 |
3 |
if exists $$feature{'num_values_fh'} |
|
624
|
3 |
0 |
if ($opened) |
|
629
|
22 |
0 |
if $num > $num_value_max |
|
632
|
10 |
12 |
if defined $ppd |
|
640
|
0 |
3 |
unless ($opened) |
|
642
|
0 |
0 |
if ($opened) |
|
648
|
0 |
3 |
unless ($opened) |
|
667
|
42 |
231 |
if exists $$feature{'type'} and $$feature{'type'} eq 'boo' |
|
668
|
213 |
18 |
if exists $$feature{'cat2bin'} |
|
670
|
2 |
1 |
unless (exists $$feature{'values_ordered'} or exists $$feature{'values'}) |
|
688
|
9 |
2 |
if exists $$feature{'pp2cat'} |
|
690
|
0 |
2 |
unless (exists $$feature{'postproc'}) |
|
714
|
52 |
216 |
if (exists $$feature{'type'} and $$feature{'type'} eq 'boo') |
|
722
|
0 |
40 |
if ($format ne 'binary') |
|
726
|
0 |
40 |
if (@$values < $n) |
|
735
|
0 |
32 |
if (ref $names ne 'ARRAY') |
|
738
|
0 |
32 |
if (ref $options ne 'HASH') |
|
746
|
0 |
118 |
unless (exists $accepted_options{$_}) |
|
754
|
0 |
64 |
unless (/^(?: normal | numeric | binary )$/x) |
|
759
|
2 |
30 |
if (exists $$options{'from_NA'} and exists $$options{'to_NA'}) { } |
|
|
3 |
27 |
elsif (exists $$options{'from_NA'} and exists $$self{'N/A'}) { } |
|
|
3 |
24 |
elsif (exists $$options{'to_NA'} and exists $$self{'N/A'}) { } |
|
|
0 |
24 |
elsif (exists $$options{'to_NA'}) { } |
|
|
0 |
24 |
elsif (exists $$options{'from_NA'}) { } |
|
|
15 |
9 |
elsif (exists $$self{'N/A'}) { } |
|
777
|
0 |
32 |
if (exists $$options{'header'} and not $$options{'header'}) |
|
781
|
4 |
28 |
if (exists $$options{'ignore'}) |
|
785
|
2 |
2 |
unless (ref $ignore) |
|
789
|
4 |
0 |
if (ref $ignore eq 'ARRAY') { } |
|
791
|
0 |
4 |
if ($has_non_nums) |
|
795
|
0 |
9 |
if ($idx < 0) |
|
806
|
2 |
2 |
if (exists $$options{'header'}) |
|
816
|
0 |
181 |
unless (exists $names{$name}) |
|
822
|
15 |
166 |
if ($from_format eq 'normal' and exists $$feature{'postproc'}) |
|
823
|
11 |
4 |
if (exists $$feature{'values'}) { } |
|
|
1 |
3 |
elsif (exists $$feature{'format'} or $to_format eq 'normal') { } |
|
|
3 |
0 |
elsif (join(' ', sort($from_format, $to_format)) eq 'normal numeric') { } |
|
838
|
24 |
157 |
if (exists $$feature{'format'} and $$feature{'format'} eq 'binary') { } |
|
|
24 |
133 |
elsif (exists $$feature{'format'}) { } |
|
|
36 |
97 |
elsif ($from_format eq 'binary') { } |
|
845
|
60 |
121 |
$bin ? : |
|
859
|
0 |
203 |
if (ref $values ne 'ARRAY') |
|
862
|
0 |
203 |
if (@$values < @$descrs) |
|
873
|
160 |
1137 |
if (defined $ignore) |
|
878
|
318 |
979 |
exists $$feature{'format'} ? : |
|
879
|
318 |
979 |
exists $$feature{'format'} ? : |
|
881
|
0 |
1297 |
if (@value == 0) |
|
887
|
950 |
347 |
if (@value == 1) { } |
|
889
|
235 |
715 |
if (defined $from_NA and $value eq $from_NA) { } |
|
|
0 |
1400 |
elsif (defined $to_NA and not defined $value and not defined $from_NA) { } |
|
897
|
0 |
347 |
if (defined $to_NA and not grep({defined $_;} @value) and not defined $from_NA) { } |
|
|
133 |
229 |
elsif (defined $from_NA and not grep({$_ ne $from_NA;} @value)) { } |
|
906
|
368 |
929 |
if ($is_NA) |
|
907
|
164 |
204 |
$to_format eq 'binary' ? : |
|
912
|
368 |
561 |
if ($from_format eq $to_format) { } |
|
919
|
102 |
459 |
if ($from_format eq 'normal' and exists $$feature{'postproc'}) |
|
922
|
171 |
390 |
if ($from_format eq 'normal') { } |
|
|
49 |
341 |
elsif ($from_format eq 'numeric' and exists $$feature{'type'} and $$feature{'type'} =~ /^(int|num|boo)$/) { } |
|
|
27 |
314 |
elsif ($from_format eq 'binary' and exists $$feature{'type'} and $$feature{'type'} eq 'boo') { } |
|
933
|
0 |
314 |
unless (defined $transfer) |
|
936
|
40 |
274 |
unless (exists $$feature{$transfer}) |
|
937
|
40 |
0 |
if (exists $$feature{$transfer . '_dyna'}) { } |
|
945
|
0 |
314 |
unless (exists $$feature{$transfer}{$valval}) |
|
947
|
0 |
0 |
if ($valval eq $$feature{'name'}) |
|
976
|
0 |
19 |
unless (defined &Scalar::Util::openhandle($source)) |
|
979
|
0 |
19 |
unless (defined &Scalar::Util::openhandle($sink)) |
|
982
|
0 |
19 |
if (ref $options ne 'HASH') |
|
986
|
2 |
17 |
exists $$options{'OFS'} ? : |
|
989
|
16 |
3 |
if (exists $$options{'names'}) { } |
|
|
3 |
0 |
elsif (exists $$options{'header'} and $$options{'header'}) { } |
|
1005
|
3 |
16 |
if (@orig_header_fields) |
|
1010
|
4 |
15 |
if (not exists $$self{'feat_named'}{$field}) { } |
|
1016
|
4 |
11 |
$bin ? : |
|
1029
|
0 |
190 |
if $@ |
|
1037
|
0 |
0 |
if (exists $$feature{'label'}) { } |
|
1038
|
0 |
0 |
if (ref $$feature{'label'} eq 'ARRAY') { } |
|
1054
|
0 |
4 |
unless defined $message |