File Coverage

blib/lib/Array/Objectify/Tie.pm
Criterion Covered Total %
statement 26 39 66.6
branch 2 2 100.0
condition n/a
subroutine 9 14 64.2
pod 0 1 0.0
total 37 56 66.0


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