File Coverage

blib/lib/Bubblegum/Role/Configuration.pm
Criterion Covered Total %
statement 67 67 100.0
branch 4 6 66.6
condition n/a
subroutine 16 16 100.0
pod 0 1 0.0
total 87 90 96.6


line stmt bran cond sub pod time code
1             package Bubblegum::Role::Configuration;
2              
3 39     39   15715 use 5.10.0;
  39         137  
  39         1579  
4 39     39   602 use namespace::autoclean;
  39         14625  
  39         186  
5              
6 39     39   1977 use strict;
  39         47  
  39         991  
7 39     39   17205 use utf8::all;
  39         1446183  
  39         261  
8 39     39   105540 use warnings;
  39         69  
  39         892  
9              
10 39     39   310 use Import::Into;
  39         44  
  39         624  
11 39     39   565 use Moo::Role;
  39         11757  
  39         293  
12              
13 39     39   24677 use Bubblegum::Namespace ();
  39         63  
  39         936  
14 39     39   184 use feature ();
  39         42  
  39         465  
15 39     39   138 use mro ();
  39         40  
  39         639  
16              
17 39     39   17769 use Class::Load 'load_class', 'try_load_class';
  39         404917  
  39         2346  
18 39     39   220 use parent 'autobox';
  39         47  
  39         204  
19              
20             our $VERSION = '0.45'; # VERSION
21              
22             requires 'import';
23              
24             BEGIN {
25 39     39   305301 use Bubblegum::Object::Universal; # tisk tisk
  39         90  
  39         2128  
26 39     39   9340 push @UNIVERSAL::ISA, 'Bubblegum::Object::Universal';
27             }
28              
29             sub prerequisites {
30 852     852 0 1396 my ($class, $target) = @_;
31              
32             # autoload
33 852 100       5071 unless (my $ignore = ($target =~ /^Bubblegum::Object/)) {
34 52         226 load_class 'Bubblegum::Object::Undef';
35 52         2296 load_class 'Bubblegum::Object::Array';
36 52         2134 load_class 'Bubblegum::Object::Code';
37 52         1767 load_class 'Bubblegum::Object::Float';
38 52         1732 load_class 'Bubblegum::Object::Hash';
39 52         1880 load_class 'Bubblegum::Object::Instance';
40 52         1779 load_class 'Bubblegum::Object::Integer';
41 52         1901 load_class 'Bubblegum::Object::Number';
42 52         1952 load_class 'Bubblegum::Object::Scalar';
43 52         1853 load_class 'Bubblegum::Object::String';
44 52         1852 load_class 'Bubblegum::Object::Universal';
45             }
46              
47             # resolution
48 852         6223 mro::set_mro $target, 'c3';
49              
50             # ipc handler
51 852         2734 my $ipc = try_load_class 'IPC::System::Simple';
52              
53             # imports
54 852         282056 'strict' ->import::into($target);
55 852         134834 'warnings' ->import::into($target);
56 852         115459 'utf8::all' ->import::into($target);
57 852 50       1227304 'autodie' ->import::into($target, ':all') if $ipc;
58 852 50       5874 'autodie' ->import::into($target, ':default') if !$ipc;
59 852         4813149 'feature' ->import::into($target, ':5.10');
60 852         167830 'English' ->import::into($target, '-no_match_vars');
61              
62             # autoboxing
63 39     39   192 no warnings 'once';
  39         46  
  39         4255  
64 8520         17843 $target->autobox::import(
65 852         510234 map { $_ => $$Bubblegum::Namespace::ExtendedTypes{$_} }
66             keys %$Bubblegum::Namespace::DefaultTypes
67             );
68             }
69              
70             1;