File Coverage

blib/lib/Evo/Class.pm
Criterion Covered Total %
statement 125 125 100.0
branch 24 46 52.1
condition n/a
subroutine 34 34 100.0
pod 5 9 55.5
total 188 214 87.8


line stmt bran cond sub pod time code
1             package Evo::Class;
2 37     161   18501 use Evo '-Export export_proxy; Evo::Class::Meta; Evo::Class::Base';
  37         89  
  37         266  
3              
4             export_proxy '::Syntax', qw(lazy rw ro optional check inject no_method);
5              
6 121 50   121   1169 sub import ($me, @list) {
  121         337  
  121         436  
  121         257  
7 121         316 my $caller = caller;
8 121         720 my $meta = Evo::Class::Meta->register($caller);
9 37     55   323 no strict 'refs'; ## no critic
  37         99  
  37         6389  
10 121 50       1276 push @{"${caller}::ISA"}, 'Evo::Class::Base' unless $caller->isa('Evo::Class::Base');
  121         1339  
11 121 100       1033 Evo::Export->install_in($caller, $me, @list ? @list : '*');
12             }
13              
14 121 50   121 1 421 sub META ($me, $dest) : ExportGen {
  121 50       359  
  121         241  
  121         229  
  121         216  
15 121     45   823 sub { Evo::Class::Meta->find_or_croak($dest); };
  45         1460  
16 37     37   256 }
  37         77  
  37         253  
17              
18 120 50   120 0 385 sub requires ($me, $dest) : ExportGen {
  120 50       354  
  120         228  
  120         207  
  120         201  
19              
20 13     13   1464 sub (@names) {
  13         213  
21 13         213 my $meta = Evo::Class::Meta->find_or_croak($dest);
22 13         107 $meta->reg_requirement($_) for @names;
23 120         781 };
24 37     37   8215 }
  37         87  
  37         159  
25              
26              
27 1 50   1 0 5 sub Over ($dest, $code, $name) : Attr {
  1 50       4  
  1         3  
  1         2  
  1         4  
  1         2  
28 1         5 Evo::Class::Meta->find_or_croak($dest)->mark_as_overridden($name);
29 37     37   5595 }
  37         84  
  37         151  
30              
31 7 50   7 1 23 sub Private ($dest, $code, $name) : Attr {
  7 50       20  
  7         12  
  7         10  
  7         12  
  7         11  
32 7         34 Evo::Class::Meta->find_or_croak($dest)->mark_as_private($name);
33 37     37   5615 }
  37         85  
  37         159  
34              
35 120 50   120 0 381 sub has ($me, $dest) : ExportGen {
  120 50       372  
  120         256  
  120         216  
  120         210  
36 374 50   374   1098 sub ($name, @opts) {
  374     357   705  
  374     246   1017  
  374     10   651  
        6      
37 374         1361 Evo::Class::Meta->find_or_croak($dest)->reg_attr($name, @opts);
38 120         851 };
39 37     37   6979 }
  37         85  
  37         151  
40              
41 120 50   120 0 380 sub has_over ($me, $dest) : ExportGen {
  120 50       370  
  120         242  
  120         207  
  120         209  
42 4 50   4   20 sub ($name, @opts) {
  4         10  
  4         14  
  4         8  
43 4         15 Evo::Class::Meta->find_or_croak($dest)->reg_attr_over($name, @opts);
44 120         768 };
45 37     37   7218 }
  37         86  
  37         155  
46              
47 120 50   120 1 386 sub extends ($me, $dest) : ExportGen {
  120 50       355  
  120         245  
  120         226  
  120         211  
48 2     2   12 sub(@parents) {
  2         4  
49 2         12 Evo::Class::Meta->find_or_croak($dest)->extend_with($_) for @parents;
50 120         782 };
51 37     37   6882 }
  37         84  
  37         157  
52              
53 120 50   120 1 373 sub implements ($me, $dest) : ExportGen {
  120 50       342  
  120         228  
  120         215  
  120         198  
54 2     2   28 sub(@parents) {
  2         4  
55 2         13 Evo::Class::Meta->find_or_croak($dest)->check_implementation($_) for @parents;
56 120         695 };
57 37     37   6504 }
  37         90  
  37         162  
58              
59              
60 120 50   120 1 391 sub with ($me, $dest) : ExportGen {
  120 50       425  
  120         250  
  120         214  
  120         210  
61              
62 15     15   154 sub (@parents) {
  15     15   40  
        13      
63 15         149 my $meta = Evo::Class::Meta->find_or_croak($dest);
64 15         60 foreach my $parent (@parents) {
65 15         97 $meta->extend_with($parent);
66 15         83 $meta->check_implementation($parent);
67             }
68 120         830 };
69 37     37   7946 }
  37         83  
  37         156  
70              
71              
72             1;
73              
74             __END__