File Coverage

blib/lib/Validation/Class/Params.pm
Criterion Covered Total %
statement 33 33 100.0
branch 3 4 75.0
condition 2 2 100.0
subroutine 10 10 100.0
pod 1 3 33.3
total 49 52 94.2


line stmt bran cond sub pod time code
1             # Container Class for Data Input Parameters
2              
3             # Validation::Class::Params is a container class for input parameters and is
4             # derived from the L class.
5              
6             package Validation::Class::Params;
7              
8 109     109   769 use strict;
  109         290  
  109         3305  
9 109     109   647 use warnings;
  109         262  
  109         3031  
10              
11 109     109   670 use Validation::Class::Util '!has';
  109         219  
  109         691  
12 109     109   666 use Hash::Flatten ();
  109         259  
  109         2298  
13 109     109   596 use Carp 'confess';
  109         290  
  109         7729  
14              
15             our $VERSION = '7.900059'; # VERSION
16              
17 109     109   769 use base 'Validation::Class::Mapping';
  109         285  
  109         12796  
18              
19 109     109   814 use Validation::Class::Mapping;
  109         245  
  109         33348  
20              
21             sub add {
22              
23 1542     1542 1 3215 my $self = shift;
24              
25 1542         4378 my $arguments = $self->build_args(@_);
26              
27 1542         3051 while (my ($key, $value) = each %{$arguments}) {
  2993         10096  
28              
29 1452 100 100     6497 confess
30              
31             "A parameter value must be a string or an array of strings, all " .
32             "other structures are illegal"
33              
34             unless ("ARRAY" eq (ref($value) || "ARRAY"))
35              
36             ;
37              
38 1451         3704 $self->{$key} = $value;
39              
40             }
41              
42             confess
43              
44 1541 50       3858 "Parameter values must be strings, arrays of strings, or hashrefs " .
45             "whose values are any of the previously mentioned values, i.e. an " .
46             "array with nested structures is illegal"
47              
48             if $self->flatten->grep(qr/(:.*:|:\d+.)/)->count
49              
50             ;
51              
52 1541         8807 return $self;
53              
54             }
55              
56             sub flatten {
57              
58 1541     1541 0 3007 my ($self) = @_;
59              
60 1541         4341 return Validation::Class::Mapping->new(
61             Hash::Flatten::flatten($self->hash)
62             );
63              
64             }
65              
66             sub unflatten {
67              
68 1     1 0 4 my ($self) = @_;
69              
70 1         7 return Validation::Class::Mapping->new(
71             Hash::Flatten::unflatten($self->hash)
72             );
73              
74             }
75              
76             1;