File Coverage

blib/lib/Evo/Class.pm
Criterion Covered Total %
statement 125 125 100.0
branch 24 46 52.1
condition n/a
subroutine 31 31 100.0
pod 5 9 55.5
total 185 211 87.6


line stmt bran cond sub pod time code
1             package Evo::Class;
2 37     401   19355 use Evo '-Export export_proxy; Evo::Class::Meta; Evo::Class::Base';
  37         98  
  37         291  
3              
4             export_proxy '::Syntax', qw(lazy rw ro optional check inject no_method);
5              
6 121 50   121   1150 sub import ($me, @list) {
  121         318  
  121         427  
  121         252  
7 121         290 my $caller = caller;
8 121         713 my $meta = Evo::Class::Meta->register($caller);
9 37     344   281 no strict 'refs'; ## no critic
  37         95  
  37         6359  
10 121 50       1357 push @{"${caller}::ISA"}, 'Evo::Class::Base' unless $caller->isa('Evo::Class::Base');
  121         1354  
11 121 100       1042 Evo::Export->install_in($caller, $me, @list ? @list : '*');
12             }
13              
14 121 50   121 1 432 sub META ($me, $dest) : ExportGen {
  121 50       382  
  121         502  
  121         238  
  121         210  
15 121     45   836 sub { Evo::Class::Meta->find_or_croak($dest); };
  45         2133  
16 37     173   257 }
  37         83  
  37         260  
17              
18 120 50   120 0 425 sub requires ($me, $dest) : ExportGen {
  120 50       371  
  120         241  
  120         226  
  120         212  
19              
20 13     13   1580 sub (@names) {
  13         153  
21 13         220 my $meta = Evo::Class::Meta->find_or_croak($dest);
22 13         93 $meta->reg_requirement($_) for @names;
23 120         892 };
24 37     69   8572 }
  37         85  
  37         162  
25              
26              
27 1 50   1 0 5 sub Over ($dest, $code, $name) : Attr {
  1 50       3  
  1         1  
  1         3  
  1         1  
  1         2  
28 1         3 Evo::Class::Meta->find_or_croak($dest)->mark_as_overridden($name);
29 37     37   5744 }
  37         78  
  37         152  
30              
31 7 50   7 1 29 sub Private ($dest, $code, $name) : Attr {
  7 50       24  
  7         21  
  7         17  
  7         11  
  7         10  
32 7         41 Evo::Class::Meta->find_or_croak($dest)->mark_as_private($name);
33 37     37   5624 }
  37         92  
  37         157  
34              
35 120 50   120 0 399 sub has ($me, $dest) : ExportGen {
  120 50       389  
  120         230  
  120         223  
  120         206  
36 374 50   374   1092 sub ($name, @opts) {
  374     11   711  
  374         1036  
  374         622  
37 374         1370 Evo::Class::Meta->find_or_croak($dest)->reg_attr($name, @opts);
38 120         846 };
39 37     37   7035 }
  37         84  
  37         167  
40              
41 120 50   120 0 424 sub has_over ($me, $dest) : ExportGen {
  120 50       369  
  120         253  
  120         222  
  120         209  
42 4 50   4   18 sub ($name, @opts) {
  4         10  
  4         14  
  4         7  
43 4         15 Evo::Class::Meta->find_or_croak($dest)->reg_attr_over($name, @opts);
44 120         837 };
45 37     37   7049 }
  37         82  
  37         185  
46              
47 120 50   120 1 388 sub extends ($me, $dest) : ExportGen {
  120 50       354  
  120         228  
  120         290  
  120         216  
48 2     2   11 sub(@parents) {
  2         5  
49 2         12 Evo::Class::Meta->find_or_croak($dest)->extend_with($_) for @parents;
50 120         820 };
51 37     37   6718 }
  37         82  
  37         157  
52              
53 120 50   120 1 393 sub implements ($me, $dest) : ExportGen {
  120 50       352  
  120         257  
  120         239  
  120         198  
54 2     2   14 sub(@parents) {
  2         4  
55 2         8 Evo::Class::Meta->find_or_croak($dest)->check_implementation($_) for @parents;
56 120         729 };
57 37     37   6631 }
  37         87  
  37         153  
58              
59              
60 120 50   120 1 403 sub with ($me, $dest) : ExportGen {
  120 50       424  
  120         239  
  120         217  
  120         207  
61              
62 15     15   143 sub (@parents) {
  15     15   34  
        15      
63 15         150 my $meta = Evo::Class::Meta->find_or_croak($dest);
64 15         54 foreach my $parent (@parents) {
65 15         91 $meta->extend_with($parent);
66 15         95 $meta->check_implementation($parent);
67             }
68 120         802 };
69 37     37   8092 }
  37         88  
  37         183  
70              
71              
72             1;
73              
74             __END__