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.03
12              
13             =cut
14              
15             our $VERSION = '0.03'; # VERSION
16              
17 3     3   253965 use utf8;
  3         17  
  3         17  
18 3     3   78 use strict;
  3         6  
  3         49  
19 3     3   13 use warnings;
  3         8  
  3         80  
20 3     3   14 use vars qw/$VERSION @EXPORT_OK/;
  3         5  
  3         1027  
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 2015 $_hr_config = _check_hashref( $_[0] ) if ( $_[0] );
45 3 100       17 return $_hr_config if $_hr_config;
46 1 50       30 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         6 require Carp;
54 1         32 Carp::cluck('could not find a config.yml or config.yaml file');
55 1         628 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 1691 if ( -f $_[0] && defined $_[1] ) {
67 2         443 require Module::Load;
68 2         748 my $loading_package = "Config::Files::Simple::$_[1]";
69 2         21 Module::Load::load $loading_package;
70 2         147 $_hr_config = _check_hashref( $loading_package->new->config_file( $_[0] ) );
71 2         24 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   20418 require Ref::Util;
88 3 50       1378 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__