File Coverage

blib/lib/Data/MuForm/Field/List.pm
Criterion Covered Total %
statement 33 35 94.2
branch 12 18 66.6
condition 2 6 33.3
subroutine 8 8 100.0
pod 1 4 25.0
total 56 71 78.8


line stmt bran cond sub pod time code
1             package Data::MuForm::Field::List;
2             # ABSTRACT: List field
3 2     2   941 use Moo;
  2         2  
  2         8  
4             extends 'Data::MuForm::Field::Text';
5 2     2   424 use Types::Standard -types;
  2         1  
  2         19  
6              
7              
8 4     4 0 17 sub multiple {1}
9              
10             has 'size' => ( is => 'rw' );
11             has 'num_extra' => ( is => 'rw' );
12              
13             # add trigger to 'value' so we can enforce arrayref value for multiple
14             has '+value' => ( trigger => 1 );
15             sub _trigger_value {
16 8     8   739 my ( $self, $value ) = @_;
17 8 50 33     35 if (!defined $value || $value eq ''){
18 0         0 $value = [];
19             }
20             else {
21 8 50       14 $value = ref $value eq 'ARRAY' ? $value : [$value];
22             }
23 8         105 $self->{value} = $value;
24             }
25              
26             has '+input' => ( trigger => 1 );
27             sub _trigger_input {
28 4     4   698 my ( $self, $input ) = @_;
29 4 50 33     20 if (!defined $input || $input eq ''){
30 0         0 $input = [];
31             }
32             else {
33 4 50       8 $input = ref $input eq 'ARRAY' ? $input : [$input];
34             }
35 4         54 $self->{input} = $input;
36             }
37              
38             has 'valid' => ( is => 'rw', isa => ArrayRef, default => sub {[]} );
39             sub has_valid {
40 4     4 0 3 my $self = shift;
41 4 100       4 return scalar @{$self->valid} ? 1 : 0;
  4         30  
42             }
43              
44             sub validate {
45 4     4 1 18 my $self = shift;
46              
47 4 100       9 if ( $self->has_valid ) {
48 2         834 my %valid;
49 2         4 @valid{@{$self->valid}} = ();
  2         27  
50 2         12 foreach my $value ( @{$self->value} ) {
  2         26  
51 6 100       27 unless ( exists $valid{$value} ) {
52 2         12 $self->add_error("Invalid value: '{value}'", value => $value);
53             }
54             }
55             }
56             }
57              
58             sub base_render_args {
59 1     1 0 18 my $self = shift;
60 1         9 my $args = $self->next::method(@_);
61 1         2 $args->{layout_type} = 'list';
62 1 50       3 $args->{size} = $self->size if $self->size;
63 1 50       4 $args->{num_extra} = $self->num_extra if $self->num_extra;
64 1         5 return $args;
65             }
66             1;
67              
68             __END__
69              
70             =pod
71              
72             =encoding UTF-8
73              
74             =head1 NAME
75              
76             Data::MuForm::Field::List - List field
77              
78             =head1 VERSION
79              
80             version 0.04
81              
82             =head2 NAME
83              
84             Data::MuForm::Field::List
85              
86             =head2 DESCRIPTION
87              
88             =head1 AUTHOR
89              
90             Gerda Shank
91              
92             =head1 COPYRIGHT AND LICENSE
93              
94             This software is copyright (c) 2017 by Gerda Shank.
95              
96             This is free software; you can redistribute it and/or modify it under
97             the same terms as the Perl 5 programming language system itself.
98              
99             =cut