File Coverage

blib/lib/Mojar/Config.pm
Criterion Covered Total %
statement 29 29 100.0
branch 4 10 40.0
condition 2 6 33.3
subroutine 8 8 100.0
pod 2 2 100.0
total 45 55 81.8


line stmt bran cond sub pod time code
1             package Mojar::Config;
2 3     3   21303 use Mojo::Base -base;
  3         7  
  3         28  
3              
4             our $VERSION = 0.051;
5             # Adapted from Mojolicious::Plugin::Config (3.57)
6              
7 3     3   425 use Carp 'croak';
  3         6  
  3         130  
8 3     3   733 use Mojo::File 'path';
  3         188790  
  3         146  
9 3     3   23 use Mojo::Util 'decode';
  3         5  
  3         710  
10              
11             sub load {
12 2     2 1 3142 my ($self, $file, %param) = @_;
13 2 50       9 $param{log}->debug(sprintf 'Reading config file (%s)', $file) if $param{log};
14 2 50 33     50 croak "Failed to find file ($file)" unless -f $file or -l $file;
15 2         13 my $content = decode 'UTF-8', path($file)->slurp;
16 2         698 return $self->parse(\$content, %param);
17             }
18              
19             sub parse {
20 2     2 1 1055 my ($self, $content_ref, %param) = @_;
21              
22             # Run Perl code
23 2     1   146 my $config = eval sprintf '%s%s%s', 'package Mojar::Config::Sandbox;',
  1     1   17  
  1         2  
  1         22  
  1         6  
  1         2  
  1         33  
24             'use strict;', $$content_ref;
25 2 0 33     9 croak qq{Failed to load configuration from file: $@} if not $config and $@;
26 2 50       8 croak qq{Config file did not return a hash reference.\n}
27             unless ref $config eq 'HASH';
28 2 50       7 $param{log}->debug('Config content successfully read') if $param{log};
29              
30 2         11 return $config;
31             }
32              
33             1;
34             __END__