File Coverage

blib/lib/Monjon.pm
Criterion Covered Total %
statement 28 28 100.0
branch 2 2 100.0
condition n/a
subroutine 9 9 100.0
pod n/a
total 39 39 100.0


line stmt bran cond sub pod time code
1 2     2   291317 use 5.006;
  2         8  
  2         65  
2 2     2   9 use strict;
  2         3  
  2         56  
3 2     2   9 use warnings;
  2         6  
  2         57  
4              
5 2     2   9 use Carp ();
  2         3  
  2         28  
6 2     2   3587 use Moo ();
  2         50246  
  2         55  
7 2     2   3228 use Moo::Role ();
  2         21775  
  2         42  
8 2     2   15 use Import::Into ();
  2         4  
  2         378  
9              
10             package Monjon;
11              
12             our $AUTHORITY = 'cpan:TOBYINK';
13             our $VERSION = '0.003';
14             our @ISA = qw( Moo );
15              
16             do { require UNIVERSAL::DOES }
17             if $] < 5.010000;
18              
19             sub import {
20 3     3   340 my $class = shift;
21 3         20 my $caller = caller;
22            
23 3         26 'Moo'->import::into($caller, @_);
24            
25 3         5443 'Moo::Role'->apply_roles_to_object(
26             'Moo'->_accessor_maker_for($caller),
27             'Method::Generate::Accessor::Role::Monjon',
28             );
29            
30 3         5426 'Moo::Role'->apply_roles_to_object(
31             'Moo'->_constructor_maker_for($caller),
32             'Method::Generate::Constructor::Role::Monjon',
33             );
34            
35             $caller->Class::Method::Modifiers::install_modifier(
36             before => 'has',
37             sub {
38 6 100   6   46223 $Monjon::INSTANCES_EXIST{$caller}
39             and Carp::croak("$caller has already been instantiated; cannot add attributes");
40             },
41 3         3127 );
42             }
43              
44             __PACKAGE__
45             __END__