File Coverage

blib/lib/Protocol/XMLRPC/Value/Array.pm
Criterion Covered Total %
statement 44 45 97.7
branch 6 8 75.0
condition 1 2 50.0
subroutine 10 11 90.9
pod 6 6 100.0
total 67 72 93.0


line stmt bran cond sub pod time code
1             package Protocol::XMLRPC::Value::Array;
2              
3 8     8   930 use strict;
  8         13  
  8         813  
4 8     8   36 use warnings;
  8         15  
  8         190  
5              
6 8     8   4324 use Protocol::XMLRPC::ValueFactory;
  8         23  
  8         362  
7              
8 8     8   48 use overload '""' => sub { shift->to_string }, fallback => 1;
  8     0   17  
  8         65  
  0         0  
9              
10             sub new {
11 8     8 1 15 my $class = shift;
12              
13 8         9 my @values;
14              
15 8 100       20 if (@_ == 1) {
16 5 100       24 @values = ref($_[0]) eq 'ARRAY' ? @{$_[0]} : ($_[0]);
  4         12  
17             }
18             else {
19 3         7 @values = @_;
20             }
21              
22 8         15 my $self = {};
23 8         20 bless $self, $class;
24              
25 8   50     111 $self->{data} ||= [];
26              
27 8         16 foreach my $value (@values) {
28 6         14 $self->add_data($value);
29             }
30              
31 8         24 return $self;
32             }
33              
34 1     1 1 747 sub type {'array'}
35              
36 37 50   37 1 189 sub data { defined $_[1] ? $_[0]->{data} = $_[1] : $_[0]->{data} }
37              
38             sub add_data {
39 9     9 1 18 my $self = shift;
40 9         15 my ($param) = @_;
41              
42 9         35 my $value = Protocol::XMLRPC::ValueFactory->build($param);
43 9 50       21 return unless defined $value;
44              
45 9         12 push @{$self->data}, $value;
  9         19  
46             }
47              
48             sub value {
49 6     6 1 11 my $self = shift;
50              
51 6         7 return [map { $_->value } @{$self->data}];
  9         23  
  6         12  
52             }
53              
54             sub to_string {
55 7     7 1 43 my $self = shift;
56              
57 7         8 my $string = '';
58              
59 7         8 foreach my $data (@{$self->data}) {
  7         14  
60 9         30 my $value = $data->to_string;
61              
62 9         35 $string .= "$value";
63             }
64              
65 7         13 $string .= '';
66              
67 7         36 return $string;
68             }
69              
70             1;
71             __END__