File Coverage

blib/lib/XAS/Base.pm
Criterion Covered Total %
statement 15 52 28.8
branch 0 8 0.0
condition 0 6 0.0
subroutine 5 14 35.7
pod 1 1 100.0
total 21 81 25.9


line stmt bran cond sub pod time code
1             package XAS::Base;
2              
3             our $VERSION = '0.06';
4             our $EXCEPTION = 'XAS::Exception';
5              
6 1     1   15475 use XAS::Factory;
  1         2  
  1         12  
7 1     1   474 use XAS::Exception;
  1         1  
  1         8  
8              
9             use XAS::Class
10 1         9 debug => 0,
11             version => $VERSION,
12             base => 'Badger::Base',
13             utils => ':validation xprintf dotid',
14             import => 'class',
15             auto_can => '_auto_load',
16             vars => {
17             PARAMS => {
18             -xdebug => { optional => 1, default => 0 }
19             }
20             }
21 1     1   480 ;
  1         2  
22              
23             #use Data::Dumper;
24              
25             # ----------------------------------------------------------------------
26             # Overrides
27             # ----------------------------------------------------------------------
28              
29             class('Badger::Base')->methods(
30             message => sub {
31 0     0     my $self = shift;
32 0   0       my $name = shift
33             || $self->fatal("message() called without format name");
34              
35 0           my $m1 = XAS::Base->env->get_msgs;
36 0           my $m2 = $self->class->all_vars('MESSAGES');
37              
38 0           foreach my $h (@$m2) {
39              
40 0           while (my ($key, $value) = each(%$h)) {
41              
42 0           $m1->{$key} = $value;
43              
44             }
45              
46             }
47              
48 0           $self->class->var('MESSAGES', $m1);
49              
50 0   0       my $format = $self->class->hash_value('MESSAGES', $name)
51             || $self->fatal("message() called with invalid message type: $name");
52              
53 0           xprintf($format, @_);
54              
55             }
56             );
57              
58             # ----------------------------------------------------------------------
59             # Public Methods
60             # ----------------------------------------------------------------------
61              
62             # ----------------------------------------------------------------------
63             # Private Methods
64             # ----------------------------------------------------------------------
65              
66             sub _auto_load {
67 0     0     my $self = shift;
68 0           my $name = shift;
69              
70 0 0         if ($name eq 'alert') {
    0          
    0          
    0          
71              
72 0     0     return sub { XAS::Factory->module('alert'); }
73              
74 0           } elsif ($name eq 'email') {
75              
76 0     0     return sub { XAS::Factory->module('email'); }
77              
78 0           } elsif ($name eq 'log') {
79              
80 0     0     return sub { XAS::Factory->module('logger'); }
81              
82 0           } elsif ($name eq 'env') {
83              
84 0     0     return sub { XAS::Factory->module('environment'); }
85              
86 0           }
87              
88 0           my ($package, $filename, $line) = caller(2);
89 0           $self->throw_msg(
90             dotid($self->class) . '.auto_load.invmethod',
91             'invmethod',
92             $name, $filename, $line
93             );
94              
95             }
96              
97             sub _create_methods {
98 0     0     my $self = shift;
99 0           my $p = shift;
100              
101 1     1   3834 no strict "refs"; # to register new methods in package
  1         1  
  1         21  
102 1     1   4 no warnings; # turn off warnings
  1         2  
  1         130  
103              
104 0           while (my ($key, $value) = each(%$p)) {
105              
106 0           $self->{$key} = $value;
107              
108             *$key = sub {
109 0     0     my $self = shift;
110 0           return $self->{$key};
111 0           };
112              
113             }
114              
115             }
116              
117             sub init {
118 0     0 1   my $self = shift;
119              
120             # process PARAMS
121              
122 0           my $class = $self->class;
123 0           my $params = $self->class->hash_vars('PARAMS');
124 0           my $p = validate_params(\@_, $params, $class);
125              
126             # build our object
127              
128 0           $self->{'config'} = $p;
129 0           $self->_create_methods($p);
130              
131 0           return $self;
132              
133             }
134              
135             1;
136              
137             __END__