File Coverage

blib/lib/Config/Files/Simple.pm
Criterion Covered Total %
statement 26 33 78.7
branch 8 12 66.6
condition 1 3 33.3
subroutine 7 7 100.0
pod 2 2 100.0
total 44 57 77.1


line stmt bran cond sub pod time code
1             package Config::Files::Simple;
2              
3             =encoding UTF-8
4            
5             =head1 NAME
6            
7             Config::Files::Simple - Yet another config file reader.
8              
9             =head1 VERSION
10              
11             version 0.02
12              
13             =cut
14              
15             our $VERSION = '0.02'; # VERSION
16              
17 3     3   168168 use utf8;
  3         10  
  3         14  
18 3     3   69 use strict;
  3         3  
  3         42  
19 3     3   7 use warnings;
  3         49  
  3         76  
20 3     3   9 use vars qw/$VERSION @EXPORT_OK/;
  3         2  
  3         1185  
21             require Exporter;
22             *import = \&Exporter::import;
23             @EXPORT_OK = qw( config config_file);
24             our $_hr_config;
25              
26             =head1 EXPORT
27              
28             =over 4
29              
30             =item * config
31              
32             =back
33              
34             =head1 SUBROUTINES/METHODS
35              
36             =head2 config
37              
38             Read configuration file from current path.
39             It needs a YAML file.
40              
41             =cut
42              
43             sub config {
44 3 100   3 1 1434 $_hr_config = _check_hashref( $_[0] ) if ( $_[0] );
45 3 100       12 return $_hr_config if $_hr_config;
46 1 50       32 if ( -f 'config.yaml' ) {
    50          
47 0         0 return config_file( 'config.yaml', 'YAML' );
48             }
49             elsif ( -f 'config.yml' ) {
50 0         0 return config_file( 'config.yml', 'YAML' );
51             }
52             else {
53 1         4 require Carp;
54 1         36 Carp::cluck('could not find a config.yml or config.yaml file');
55 1         462 die;
56             }
57             }
58              
59             =head2 config_file
60              
61             Read configuration file from given path.
62              
63             =cut
64              
65             sub config_file {
66 2 50 33 2 1 1211 if ( -f $_[0] && defined $_[1] ) {
67 2         588 require Module::Load;
68 2         754 my $loading_package = "Config::Files::Simple::$_[1]";
69 2         19 Module::Load::load $loading_package;
70 2         109 $_hr_config = _check_hashref( $loading_package->new->config_file( $_[0] ) );
71 2         35 return $_hr_config;
72             }
73             else {
74 0         0 require Carp;
75 0         0 Carp::cluck("could not find $_[0] file");
76             }
77 0         0 return undef;
78             }
79              
80             =head2 _check_hashref
81              
82             private hashref checking sub
83              
84             =cut
85              
86             sub _check_hashref {
87 3     3   18857 require Ref::Util;
88 3 50       536 return $_[0] if ( Ref::Util::is_hashref( $_[0] ) );
89 0           require Carp;
90 0           Carp::cluck('config data must be a hashref');
91             }
92              
93             1;
94              
95             __END__