File Coverage

blib/lib/Array/Objectify/Tie.pm
Criterion Covered Total %
statement 42 42 100.0
branch 2 2 100.0
condition n/a
subroutine 15 15 100.0
pod n/a
total 59 59 100.0


line stmt bran cond sub pod time code
1             package Array::Objectify::Tie;
2              
3 4     4   87378 use strict;
  4         24  
  4         116  
4 4     4   14 use warnings;
  4         13  
  4         152  
5 4     4   1667 use Anonymous::Object;
  4         14491  
  4         316  
6              
7             our ($ANON, %OBJECTIFY);
8             BEGIN {
9 4     4   23 $ANON = Anonymous::Object->new({
10             object_name => 'Array::Objectify::Anonymous'
11             });
12 4         1439 %OBJECTIFY = (
13             HASH => 'hash_to_nested_object',
14             ARRAY => 'array_to_nested_object',
15             );
16             }
17              
18             sub TIEARRAY {
19 3     3   136866 my ($class, @params) = @_;
20 3         12 my $self = {
21             array => [
22             $class->_OBJECTIFY(@params)
23             ],
24             };
25 3         3436 bless $self, $class;
26             }
27              
28             sub CLEAR {
29 1     1   3 my $self = shift;
30 1         26 $self->{array} = [];
31             }
32              
33             sub STORESIZE {
34 1     1   3 my $self = shift;
35 1         2 return scalar @{$self->{array}};
  1         6  
36             }
37              
38             sub STORE {
39 1     1   3 my ($self, $index, $value) = @_;
40 1         4 ($self->{array}->[$index]) = $self->_OBJECTIFY($value);
41             }
42              
43            
44             sub FETCHSIZE {
45 6     6   1009 my $self = shift;
46 6         39 return scalar @{$self->{array}};
  6         31  
47             }
48              
49             sub FETCH {
50 19     19   3669 my ($self, $index) = @_;
51 19         446 $self->{array}->[$index];
52             }
53              
54             sub PUSH {
55 3     3   8 my $self = shift;
56 3         7 push @{$self->{array}}, $self->_OBJECTIFY(@_);
  3         14  
57             }
58            
59             sub POP {
60 1     1   3 my $self = shift;
61 1         2 pop @{$self->{array}};
  1         7  
62             }
63            
64             sub SHIFT {
65 1     1   3 my $self = shift;
66 1         2 shift @{$self->{array}};
  1         7  
67             }
68            
69             sub UNSHIFT {
70 1     1   3 my $self = shift;
71 1         3 unshift @{$self->{array}}, $self->_OBJECTIFY(@_);
  1         4  
72             }
73              
74             sub _OBJECTIFY {
75 8     8   21 my ($self, @params) = @_;
76             map {
77 8         29 my $method = $OBJECTIFY{ref($_)};
  14         307183  
78 14 100       89 $method ? $ANON->$method($_) : $_;
79             } @params;
80             }
81              
82             1;