File Coverage

blib/lib/Bubblegum/Role/Configuration.pm
Criterion Covered Total %
statement 31 33 93.9
branch n/a
condition n/a
subroutine 11 11 100.0
pod n/a
total 42 44 95.4


line stmt bran cond sub pod time code
1             package Bubblegum::Role::Configuration;
2              
3 38     38   19323 use 5.10.0;
  38         175  
  38         1701  
4 38     38   621 use namespace::autoclean;
  38         14587  
  38         224  
5              
6 38     38   2510 use strict;
  38         63  
  38         1235  
7 38     38   20048 use utf8::all;
  38         1667038  
  38         295  
8 38     38   116565 use warnings;
  38         73  
  38         972  
9              
10 38     38   374 use Import::Into;
  38         55  
  38         718  
11 38     38   605 use Moo::Role;
  38         12649  
  38         359  
12              
13 38     38   26940 use Bubblegum::Namespace ();
  38         85  
  38         1097  
14 38     38   202 use feature ();
  38         54  
  38         520  
15 38     38   153 use mro ();
  38         51  
  38         692  
16              
17 38     38   8295 use Class::Load 'load_class';
  0            
  0            
18             use parent 'autobox';
19              
20             our $VERSION = '0.40'; # VERSION
21              
22             requires 'import';
23              
24             BEGIN {
25             use Bubblegum::Object::Universal; # tisk tisk
26             push @UNIVERSAL::ISA, 'Bubblegum::Object::Universal';
27             }
28              
29             sub prerequisites {
30             my ($class, $target) = @_;
31              
32             # autoload
33             unless (my $ignore = ($target =~ /^Bubblegum::Object/)) {
34             load_class 'Bubblegum::Object::Undef';
35             load_class 'Bubblegum::Object::Array';
36             load_class 'Bubblegum::Object::Code';
37             load_class 'Bubblegum::Object::Float';
38             load_class 'Bubblegum::Object::Hash';
39             load_class 'Bubblegum::Object::Instance';
40             load_class 'Bubblegum::Object::Integer';
41             load_class 'Bubblegum::Object::Number';
42             load_class 'Bubblegum::Object::Scalar';
43             load_class 'Bubblegum::Object::String';
44             load_class 'Bubblegum::Object::Universal';
45             }
46              
47             # resolution
48             mro::set_mro $target, 'c3';
49              
50             # imports
51             'strict' ->import::into($target);
52             'warnings' ->import::into($target);
53             'utf8::all' ->import::into($target);
54             'autodie' ->import::into($target, ':all');
55             'feature' ->import::into($target, ':5.10');
56             'English' ->import::into($target, '-no_match_vars');
57              
58             # autoboxing
59             no warnings 'once';
60             $target->autobox::import(
61             map { $_ => $$Bubblegum::Namespace::ExtendedTypes{$_} }
62             keys %$Bubblegum::Namespace::DefaultTypes
63             );
64             }
65              
66             1;