| line |
true |
false |
branch |
|
961
|
509 |
16 |
unless (defined $unknown_parameter_handler) |
|
962
|
0 |
509 |
if ($params->{'carp_on_warn'}) { } |
|
969
|
1 |
524 |
unless defined $schema |
|
972
|
2 |
522 |
if (ref $schema ne "HASH") |
|
980
|
1 |
0 |
if ($schema->{'members'} and $schema->{'description'} || $schema->{'error_msg'}) |
|
986
|
1 |
521 |
if (exists $params->{'args'} and not defined $args) { } |
|
|
2 |
1033 |
elsif (ref $args ne 'HASH' and ref $args ne 'ARRAY') { } |
|
992
|
515 |
5 |
if (ref $args eq "HASH") |
|
995
|
13 |
663 |
unless (exists $schema->{$key}) |
|
996
|
5 |
8 |
if ($unknown_parameter_handler eq 'die') { } |
|
|
4 |
4 |
elsif ($unknown_parameter_handler eq 'warn') { } |
|
|
2 |
2 |
elsif ($unknown_parameter_handler eq 'ignore') { } |
|
1002
|
1 |
1 |
if ($logger) |
|
1016
|
512 |
2 |
if (defined(my $rules = $schema->{$key})) { } |
|
1017
|
480 |
32 |
if (ref $rules eq 'HASH') { } |
|
1018
|
473 |
7 |
unless (defined $rules->{'position'}) |
|
1019
|
1 |
472 |
if ($are_positional_args == 1) |
|
1041
|
6 |
734 |
if ($are_positional_args == 1) { } |
|
1042
|
0 |
6 |
if (ref $args ne "ARRAY") |
|
1050
|
2 |
738 |
unless (defined $rules) |
|
1056
|
27 |
711 |
if (ref $rules eq "") |
|
1064
|
725 |
13 |
if (ref $rules eq "HASH") |
|
1065
|
0 |
725 |
if (exists $rules->{'description'}) |
|
1068
|
40 |
685 |
if ($rules->{'transform'} and defined $value) |
|
1069
|
38 |
2 |
if (ref $rules->{'transform'} eq 'CODE') { } |
|
1075
|
162 |
561 |
if (exists $rules->{'optional'}) { } |
|
|
0 |
561 |
elsif ($rules->{'nullable'}) { } |
|
1076
|
9 |
153 |
if (ref $rules->{'optional'} eq 'CODE') { } |
|
1087
|
153 |
583 |
if (ref $rules eq 'HASH' and $is_optional) { } |
|
|
7 |
580 |
elsif (ref $args eq 'HASH' and not exists $args->{$key}) { } |
|
1089
|
2 |
151 |
if ($are_positional_args == 1) { } |
|
1091
|
1 |
1 |
unless (defined $$args[$rules->{'position'}]) |
|
1095
|
79 |
72 |
unless (exists $args->{$key}) |
|
1099
|
80 |
73 |
if ($look_for_default) |
|
1100
|
1 |
79 |
if ($are_positional_args == 1) |
|
1101
|
0 |
1 |
if (scalar @{$args;} < $rules->{'position'}) |
|
1107
|
5 |
75 |
if (exists $rules->{'default'}) |
|
1112
|
4 |
76 |
if ($rules->{'schema'}) { } |
|
1114
|
3 |
1 |
unless scalar %{$value;} |
|
1126
|
637 |
13 |
if (ref $rules eq 'HASH') { } |
|
|
12 |
1 |
elsif (ref $rules eq 'ARRAY') { } |
|
|
1 |
0 |
elsif (ref $rules) { } |
|
1127
|
80 |
557 |
if (defined(my $min = $rules->{'min'}) and defined(my $max = $rules->{'max'})) |
|
1128
|
5 |
75 |
if ($min > $max) |
|
1133
|
69 |
563 |
if ($rules->{'memberof'}) |
|
1134
|
3 |
66 |
if (defined(my $min = $rules->{'min'})) |
|
1137
|
1 |
65 |
if (defined(my $max = $rules->{'max'})) |
|
1145
|
53 |
16 |
if (ref $rule_value eq "CODE" and $rule_name ne "validate" and $rule_name ne "callback" and $rule_name ne "validator") |
|
1150
|
0 |
1192 |
if (builtin::blessed($rule_value) and $rule_value->can("as_string")) |
|
1154
|
565 |
627 |
if ($rule_name eq 'type') { } |
|
|
162 |
465 |
elsif ($rule_name eq 'min') { } |
|
|
66 |
399 |
elsif ($rule_name eq 'max') { } |
|
|
59 |
340 |
elsif ($rule_name eq 'matches') { } |
|
|
7 |
333 |
elsif ($rule_name eq 'nomatch') { } |
|
|
65 |
268 |
elsif ($rule_name eq 'memberof' or $rule_name eq 'enum') { } |
|
|
24 |
244 |
elsif ($rule_name eq 'notmemberof') { } |
|
|
6 |
238 |
elsif ($rule_name eq 'isa') { } |
|
|
16 |
222 |
elsif ($rule_name eq 'can') { } |
|
|
18 |
204 |
elsif ($rule_name eq 'element_type') { } |
|
|
69 |
135 |
elsif ($rule_name eq 'optional') { } |
|
|
3 |
132 |
elsif ($rule_name eq 'default') { } |
|
|
11 |
121 |
elsif ($rule_name eq 'error_msg') { } |
|
|
36 |
85 |
elsif ($rule_name eq 'transform') { } |
|
|
16 |
69 |
elsif ($rule_name eq 'case_sensitive') { } |
|
|
0 |
69 |
elsif ($rule_name eq 'description') { } |
|
|
0 |
69 |
elsif ($rule_name =~ /^_/) { } |
|
|
1 |
68 |
elsif ($rule_name eq 'semantic') { } |
|
|
44 |
24 |
elsif ($rule_name eq 'schema') { } |
|
|
2 |
22 |
elsif ($rule_name eq 'validate' or $rule_name eq 'validator') { } |
|
|
17 |
5 |
elsif ($rule_name eq 'callback') { } |
|
|
5 |
0 |
elsif ($rule_name eq 'position') { } |
|
1157
|
256 |
309 |
if ($type eq 'string' or $type eq 'str') { } |
|
|
94 |
215 |
elsif ($type eq 'integer') { } |
|
|
49 |
166 |
elsif ($type eq 'number' or $type eq 'float') { } |
|
|
37 |
129 |
elsif ($type eq 'arrayref') { } |
|
|
39 |
90 |
elsif ($type eq 'hashref') { } |
|
|
23 |
67 |
elsif ($type eq 'boolean' or $type eq 'bool') { } |
|
|
3 |
64 |
elsif ($type eq 'coderef') { } |
|
|
17 |
47 |
elsif ($type eq 'object') { } |
|
|
46 |
1 |
elsif (my $custom_type = $custom_types->{$type}) { } |
|
1158
|
6 |
250 |
if (ref $value) |
|
1161
|
0 |
0 |
unless (ref $value eq "" or defined $value and length $value) |
|
1165
|
1 |
93 |
unless (defined $value) |
|
1168
|
6 |
87 |
unless ($value =~ /^\s*[+\-]?\d+\s*$/) |
|
1169
|
1 |
5 |
if ($rules->{'error_msg'}) { } |
|
1177
|
2 |
47 |
unless (defined $value) |
|
1180
|
2 |
45 |
unless (&Scalar::Util::looks_like_number($value)) |
|
1181
|
0 |
2 |
if ($rules->{'error_msg'}) { } |
|
1190
|
2 |
35 |
unless (defined $value) |
|
1193
|
1 |
34 |
if (ref $value ne "ARRAY") |
|
1194
|
0 |
1 |
if ($rules->{'error_msg'}) { } |
|
1201
|
2 |
37 |
unless (defined $value) |
|
1204
|
0 |
37 |
if (ref $value ne "HASH") |
|
1205
|
0 |
0 |
if ($rules->{'error_msg'}) { } |
|
1212
|
1 |
22 |
unless (defined $value) |
|
1215
|
3 |
19 |
if ($value eq 'true' or $value eq 'on' or $value eq 'yes') { } |
|
|
3 |
16 |
elsif ($value eq 'false' or $value eq 'off' or $value eq 'no') { } |
|
1220
|
2 |
20 |
if ($value ne 1 and $value ne 0) |
|
1221
|
0 |
2 |
if ($rules->{'error_msg'}) { } |
|
1229
|
1 |
2 |
unless (defined $value) |
|
1232
|
0 |
2 |
if (ref $value ne "CODE") |
|
1233
|
0 |
0 |
if ($rules->{'error_msg'}) { } |
|
1240
|
1 |
16 |
unless (defined $value) |
|
1243
|
1 |
15 |
unless (builtin::blessed($value)) |
|
1244
|
0 |
1 |
if ($rules->{'error_msg'}) { } |
|
1251
|
6 |
40 |
if ($custom_type->{'transform'}) |
|
1253
|
6 |
0 |
if (ref $custom_type->{'transform'} eq 'CODE') { } |
|
1265
|
0 |
162 |
unless (defined $rules->{'type'}) |
|
1269
|
3 |
159 |
if (exists $custom_types->{$type}{'min'}) |
|
1273
|
56 |
106 |
if ($type eq 'string' or $type eq 'str') { } |
|
|
17 |
89 |
elsif ($type eq 'arrayref') { } |
|
|
4 |
85 |
elsif ($type eq 'hashref') { } |
|
|
84 |
1 |
elsif ($type eq 'integer' or $type eq 'number' or $type eq 'float') { } |
|
1274
|
1 |
55 |
if ($rule_value < 0) |
|
1275
|
0 |
1 |
if ($rules->{'error_msg'}) { } |
|
1281
|
1 |
54 |
unless (defined $value) |
|
1284
|
54 |
0 |
if (defined(my $len = _number_of_characters($value))) { } |
|
1285
|
7 |
47 |
if ($len < $rule_value) |
|
1294
|
0 |
17 |
unless (defined $value) |
|
1297
|
1 |
16 |
if (ref $value ne "ARRAY") |
|
1298
|
0 |
1 |
if ($rules->{'error_msg'}) { } |
|
1304
|
2 |
14 |
if (scalar @{$value;} < $rule_value) |
|
1305
|
0 |
2 |
if ($rules->{'error_msg'}) { } |
|
1313
|
0 |
4 |
unless (defined $value) |
|
1316
|
1 |
3 |
if (scalar keys %{$value;} < $rule_value) |
|
1317
|
0 |
1 |
if ($rules->{'error_msg'}) { } |
|
1325
|
0 |
84 |
unless (defined $value) |
|
1328
|
84 |
0 |
if (&Scalar::Util::looks_like_number($value)) { } |
|
1329
|
19 |
65 |
if ($value < $rule_value) |
|
1330
|
3 |
16 |
if ($rules->{'error_msg'}) { } |
|
1339
|
0 |
0 |
if ($rules->{'error_msg'}) { } |
|
1350
|
0 |
66 |
unless (defined $rules->{'type'}) |
|
1354
|
2 |
64 |
if (exists $custom_types->{$type}{'max'}) |
|
1358
|
24 |
42 |
if ($type eq 'string' or $type eq 'str') { } |
|
|
7 |
35 |
elsif ($type eq 'arrayref') { } |
|
|
3 |
32 |
elsif ($type eq 'hashref') { } |
|
|
31 |
1 |
elsif ($type eq 'integer' or $type eq 'number' or $type eq 'float') { } |
|
1359
|
1 |
23 |
unless (defined $value) |
|
1362
|
23 |
0 |
if (defined(my $len = _number_of_characters($value))) { } |
|
1363
|
5 |
18 |
if ($len > $rule_value) |
|
1372
|
0 |
7 |
unless (defined $value) |
|
1375
|
0 |
7 |
if (ref $value ne "ARRAY") |
|
1376
|
0 |
0 |
if ($rules->{'error_msg'}) { } |
|
1382
|
4 |
3 |
if (scalar @{$value;} > $rule_value) |
|
1383
|
0 |
4 |
if ($rules->{'error_msg'}) { } |
|
1391
|
0 |
3 |
unless (defined $value) |
|
1394
|
2 |
1 |
if (scalar keys %{$value;} > $rule_value) |
|
1395
|
0 |
2 |
if ($rules->{'error_msg'}) { } |
|
1403
|
0 |
31 |
unless (defined $value) |
|
1406
|
31 |
0 |
if (&Scalar::Util::looks_like_number($value)) { } |
|
1407
|
4 |
27 |
if ($value > $rule_value) |
|
1408
|
0 |
4 |
if ($rules->{'error_msg'}) { } |
|
1417
|
0 |
0 |
if ($rules->{'error_msg'}) { } |
|
1428
|
1 |
58 |
unless (defined $value) |
|
1432
|
55 |
3 |
ref $rule_value eq 'Regexp' ? : |
|
1433
|
2 |
56 |
if ($rules->{'type'} eq 'arrayref' or $rules->{'type'} eq 'ArrayRef') { } |
|
|
17 |
39 |
elsif (not $value =~ /$re/) { } |
|
1435
|
0 |
2 |
if (scalar @matches != scalar @{$value;}) |
|
1436
|
0 |
0 |
if ($rules->{'error_msg'}) { } |
|
1443
|
3 |
14 |
if ($rules->{'error_msg'}) { } |
|
1451
|
17 |
41 |
if ($@) |
|
1452
|
3 |
14 |
if ($rules->{'error_msg'}) { } |
|
1460
|
0 |
7 |
unless (defined $value) |
|
1463
|
3 |
4 |
if ($rules->{'type'} eq 'arrayref' or $rules->{'type'} eq 'ArrayRef') { } |
|
|
1 |
3 |
elsif ($value =~ /$rule_value/) { } |
|
1465
|
1 |
2 |
if (scalar @matches) |
|
1466
|
0 |
1 |
if ($rules->{'error_msg'}) { } |
|
1473
|
0 |
1 |
if ($rules->{'error_msg'}) { } |
|
1481
|
0 |
65 |
unless (defined $value) |
|
1484
|
63 |
2 |
if (ref $rule_value eq 'ARRAY') { } |
|
1486
|
12 |
51 |
if ($rules->{'type'} eq 'integer' or $rules->{'type'} eq 'number' or $rules->{'type'} eq 'float') { } |
|
1487
|
5 |
7 |
unless (&List::Util::any(sub {
$_ == $value;
}
, @{$rule_value;})) |
|
1492
|
216 |
30 |
!defined($rules->{'case_sensitive'}) || $rules->{'case_sensitive'} == 1 ? : |
|
|
15 |
36 |
unless (&List::Util::any(sub {
!defined($rules->{'case_sensitive'}) || $rules->{'case_sensitive'} == 1 ? $_ eq $value : lc $_ eq $l;
}
, @{$rule_value;})) |
|
1497
|
20 |
43 |
unless ($ok) |
|
1498
|
3 |
17 |
if ($rules->{'error_msg'}) { } |
|
1506
|
0 |
2 |
if ($rules->{'error_msg'}) { } |
|
1513
|
0 |
24 |
unless (defined $value) |
|
1516
|
23 |
1 |
if (ref $rule_value eq 'ARRAY') { } |
|
1518
|
6 |
17 |
if ($rules->{'type'} eq 'integer' or $rules->{'type'} eq 'number' or $rules->{'type'} eq 'float') { } |
|
1519
|
4 |
2 |
if (&List::Util::any(sub {
$_ == $value;
}
, @{$rule_value;})) |
|
1524
|
33 |
0 |
!defined($rules->{'case_sensitive'}) || $rules->{'case_sensitive'} == 1 ? : |
|
|
9 |
8 |
if (&List::Util::any(sub {
!defined($rules->{'case_sensitive'}) || $rules->{'case_sensitive'} == 1 ? $_ eq $value : lc $_ eq $l;
}
, @{$rule_value;})) |
|
1529
|
13 |
10 |
unless ($ok) |
|
1530
|
1 |
12 |
if ($rules->{'error_msg'}) { } |
|
1538
|
0 |
1 |
if ($rules->{'error_msg'}) { } |
|
1545
|
0 |
6 |
unless (defined $value) |
|
1548
|
5 |
1 |
if ($rules->{'type'} eq 'object') { } |
|
1549
|
1 |
4 |
unless ($value->isa($rule_value)) |
|
1550
|
1 |
0 |
ref $value ? : |
|
1557
|
0 |
16 |
unless (defined $value) |
|
1560
|
15 |
1 |
if ($rules->{'type'} eq 'object') { } |
|
1561
|
8 |
7 |
if (ref $rule_value eq 'ARRAY') { } |
|
|
6 |
1 |
elsif (not ref $rule_value) { } |
|
1564
|
4 |
11 |
unless ($value->can($method)) |
|
1570
|
3 |
3 |
unless ($value->can($rule_value)) |
|
1581
|
18 |
0 |
if ($rules->{'type'} eq 'arrayref' or $rules->{'type'} eq 'ArrayRef') { } |
|
1584
|
1 |
0 |
if ($custom_type and $custom_type->{'type'}) |
|
1588
|
2 |
0 |
if ($custom_type and $custom_type->{'transform'}) |
|
1590
|
2 |
0 |
if (ref $custom_type->{'transform'} eq 'CODE') { } |
|
1597
|
15 |
27 |
if ($type eq 'string' or $type eq 'Str') { } |
|
|
23 |
4 |
elsif ($type eq 'integer') { } |
|
|
4 |
0 |
elsif ($type eq 'number' or $rule_value eq 'float') { } |
|
1598
|
0 |
15 |
if (ref $member) |
|
1599
|
0 |
0 |
if ($rules->{'error_msg'}) { } |
|
1607
|
2 |
21 |
if (ref $member or $member =~ /\D/) |
|
1608
|
1 |
1 |
if ($rules->{'error_msg'}) { } |
|
1616
|
1 |
3 |
if (ref $member or not $member =~ /^[-+]?(\d*\.\d+|\d+\.?\d*)$/) |
|
1617
|
0 |
1 |
if ($rules->{'error_msg'}) { } |
|
1646
|
1 |
0 |
if ($rule_value eq 'unix_timestamp') { } |
|
1647
|
0 |
1 |
if ($value < 0 or $value > 2147483647) |
|
1655
|
11 |
33 |
if ($rules->{'type'} eq 'arrayref' or $rules->{'type'} eq 'ArrayRef') { } |
|
|
33 |
0 |
elsif ($rules->{'type'} eq 'hashref') { } |
|
1656
|
11 |
0 |
if (ref $value eq 'ARRAY') { } |
|
|
0 |
0 |
elsif (defined $value) { } |
|
1658
|
0 |
10 |
unless (validate_strict({"input", {$key, $member}, "schema", {$key, $rule_value}, "custom_types", $custom_types})) |
|
1666
|
33 |
0 |
if (ref $value eq 'HASH') { } |
|
1669
|
31 |
2 |
if (scalar keys %{$value;}) |
|
1670
|
20 |
0 |
if (my $new_args = validate_strict({'input', $nested_with_defaults, 'schema', $rule_value, 'custom_types', $custom_types})) { } |
|
1683
|
2 |
0 |
if (ref $rule_value eq 'CODE') { } |
|
1684
|
1 |
1 |
if (my $error = &{$rule_value;}($args)) |
|
1693
|
1 |
16 |
unless (defined &$rule_value) |
|
1697
|
6 |
9 |
unless ($res) |
|
1698
|
0 |
6 |
if ($rules->{'error_msg'}) { } |
|
1706
|
0 |
5 |
if ($rule_value =~ /\D/) |
|
1709
|
0 |
5 |
if ($rule_value < 0) |
|
1717
|
10 |
2 |
if (scalar @{$rules;}) { } |
|
1722
|
1 |
16 |
if (ref $rule ne "HASH") |
|
1726
|
0 |
16 |
unless (defined $rule->{'type'}) |
|
1734
|
7 |
9 |
unless ($@) |
|
1739
|
2 |
7 |
unless ($rc) |
|
1754
|
6 |
306 |
if (my $relationships = $params->{'relationships'}) |
|
1758
|
37 |
270 |
if (my $cross_validation = $params->{'cross_validation'}) |
|
1761
|
1 |
41 |
if (not ref $validator or ref $validator ne "CODE") |
|
1765
|
18 |
23 |
if (my $error = &{$validator;}(\%validated_args, $validator)) |
|
1777
|
4 |
284 |
if ($are_positional_args == 1) |
|
1780
|
6 |
0 |
if (my $value = delete $validated_args{$key}) |
|
1782
|
1 |
5 |
if (defined $rc[$position]) |
|
1799
|
0 |
77 |
unless defined $value |
|
1801
|
71 |
6 |
unless ($value =~ /[^[:ascii:]]/) |
|
1805
|
6 |
0 |
unless utf8::is_utf8($value) |
|
1821
|
2 |
103 |
if (ref $rules eq "HASH" and exists $rules->{'default'} and not exists $result{$key}) |
|
1826
|
8 |
97 |
if (ref $rules eq "HASH" and $rules->{'schema'} and ref $result{$key} eq "HASH") |
|
1837
|
0 |
6 |
unless ref $relationships eq "ARRAY" |
|
1840
|
0 |
6 |
unless my $type = $rel->{'type'} |
|
1842
|
1 |
5 |
if ($type eq 'mutually_exclusive') { } |
|
|
1 |
4 |
elsif ($type eq 'required_group') { } |
|
|
1 |
3 |
elsif ($type eq 'conditional_requirement') { } |
|
|
1 |
2 |
elsif ($type eq 'dependency') { } |
|
|
1 |
1 |
elsif ($type eq 'value_constraint') { } |
|
|
1 |
0 |
elsif ($type eq 'value_conditional') { } |
|
1863
|
0 |
1 |
unless $rel->{'params'} |
|
1864
|
0 |
1 |
unless @params >= 2 |
|
1866
|
2 |
0 |
if exists $args->{$_} |
|
1868
|
1 |
0 |
if (@present > 1) |
|
1877
|
0 |
1 |
unless $rel->{'params'} |
|
1878
|
0 |
1 |
unless @params >= 2 |
|
1880
|
0 |
2 |
if exists $args->{$_} |
|
1882
|
1 |
0 |
if (@present == 0) |
|
1892
|
0 |
1 |
unless my $if_param = $rel->{'if'} |
|
1893
|
0 |
1 |
unless my $then_param = $rel->{'then_required'} |
|
1896
|
1 |
0 |
if (exists $args->{$if_param} and defined $args->{$if_param}) |
|
1898
|
1 |
0 |
if ($args->{$if_param}) |
|
1900
|
0 |
1 |
unless (exists $args->{$then_param} and defined $args->{$then_param}) |
|
1911
|
0 |
1 |
unless my $param = $rel->{'param'} |
|
1912
|
0 |
1 |
unless my $requires = $rel->{'requires'} |
|
1915
|
1 |
0 |
if (exists $args->{$param} and defined $args->{$param}) |
|
1916
|
1 |
0 |
unless (exists $args->{$requires} and defined $args->{$requires}) |
|
1926
|
0 |
1 |
unless my $if_param = $rel->{'if'} |
|
1927
|
0 |
1 |
unless my $then_param = $rel->{'then'} |
|
1928
|
0 |
1 |
unless my $operator = $rel->{'operator'} |
|
1930
|
0 |
1 |
unless defined $value |
|
1933
|
1 |
0 |
if (exists $args->{$if_param} and defined $args->{$if_param} and $args->{$if_param}) |
|
1935
|
1 |
0 |
if (exists $args->{$then_param} and defined $args->{$then_param}) |
|
1939
|
1 |
0 |
if ($operator eq '==') { } |
|
|
0 |
0 |
elsif ($operator eq '!=') { } |
|
|
0 |
0 |
elsif ($operator eq '<') { } |
|
|
0 |
0 |
elsif ($operator eq '<=') { } |
|
|
0 |
0 |
elsif ($operator eq '>') { } |
|
|
0 |
0 |
elsif ($operator eq '>=') { } |
|
1953
|
1 |
0 |
unless ($valid) |
|
1964
|
0 |
1 |
unless my $if_param = $rel->{'if'} |
|
1966
|
0 |
1 |
unless my $then_param = $rel->{'then_required'} |
|
1967
|
0 |
1 |
unless defined $equals |
|
1970
|
1 |
0 |
if (exists $args->{$if_param} and defined $args->{$if_param}) |
|
1971
|
1 |
0 |
if ($args->{$if_param} eq $equals) |
|
1973
|
1 |
0 |
unless (exists $args->{$then_param} and defined $args->{$then_param}) |
|
1989
|
12 |
210 |
if ($logger) |
|
2003
|
3 |
1 |
if ($logger) { } |