File Coverage

blib/lib/ASP4/ConfigNode.pm
Criterion Covered Total %
statement 28 30 93.3
branch 5 6 83.3
condition n/a
subroutine 6 7 85.7
pod 0 2 0.0
total 39 45 86.6


line stmt bran cond sub pod time code
1              
2             package ASP4::ConfigNode;
3              
4 9     9   42 use strict;
  9         24  
  9         237  
5 9     9   35 use warnings 'all';
  9         9  
  9         936  
6 9     9   34 use Carp 'confess';
  9         12  
  9         3232  
7              
8              
9             sub new
10             {
11 126     126 0 162 my ($class, $ref) = @_;
12 126         416 local $SIG{__DIE__} = \&Carp::confess;
13 126         157 my $s = bless $ref, $class;
14 126         296 $s->init_keys();
15 126         346 $s;
16             }# end new()
17              
18              
19             sub init_keys
20             {
21 126     126 0 113 my $s = shift;
22            
23 126         457 foreach my $key ( grep { ref($s->{$_}) eq 'HASH' } keys(%$s) )
  522         849  
24             {
25 72 100       174 if( $key eq 'web' )
    100          
26             {
27 9         4463 require ASP4::ConfigNode::Web;
28 9         52 $s->{$key} = ASP4::ConfigNode::Web->new( $s->{$key} );
29             }
30             elsif( $key eq 'system' )
31             {
32 9         4353 require ASP4::ConfigNode::System;
33 9         51 $s->{$key} = ASP4::ConfigNode::System->new( $s->{$key} );
34             }
35             else
36             {
37 54         121 $s->{$key} = __PACKAGE__->new( $s->{$key} );
38             }# end if()
39             }# end foreach()
40             }# end init_keys()
41              
42              
43             sub AUTOLOAD
44             {
45 278003     278003   184394 my $s = shift;
46 278003         146428 our $AUTOLOAD;
47 278003         777856 my ($name) = $AUTOLOAD =~ m/([^:]+)$/;
48            
49 278003 50       391515 confess "Unknown method or property '$name'" unless exists($s->{$name});
50            
51             # Read-only:
52 278003         658126 $s->{$name};
53             }# end AUTOLOAD()
54              
55              
56             sub DESTROY
57             {
58 0     0     my $s = shift;
59 0           undef(%$s);
60             }# end DESTROY()
61              
62             1;# return true:
63