File Coverage

blib/lib/Evo/Class.pm
Criterion Covered Total %
statement 125 125 100.0
branch 24 46 52.1
condition n/a
subroutine 32 32 100.0
pod 5 9 55.5
total 186 212 87.7


line stmt bran cond sub pod time code
1             package Evo::Class;
2 37     146   15144 use Evo '-Export export_proxy; Evo::Class::Meta; Evo::Class::Base';
  37         79  
  37         227  
3              
4             export_proxy '::Syntax', qw(lazy rw ro optional check inject no_method);
5              
6 121 50   121   1105 sub import ($me, @list) {
  121         265  
  121         373  
  121         223  
7 121         261 my $caller = caller;
8 121         572 my $meta = Evo::Class::Meta->register($caller);
9 37     37   288 no strict 'refs'; ## no critic
  37         68  
  37         5534  
10 121 50       1085 push @{"${caller}::ISA"}, 'Evo::Class::Base' unless $caller->isa('Evo::Class::Base');
  121         1120  
11 121 100       876 Evo::Export->install_in($caller, $me, @list ? @list : '*');
12             }
13              
14 121 50   121 1 352 sub META ($me, $dest) : ExportGen {
  121 50       307  
  121         208  
  121         197  
  121         196  
15 121     45   762 sub { Evo::Class::Meta->find_or_croak($dest); };
  45         2230  
16 37     37   216 }
  37         69  
  37         196  
17              
18 120 50   120 0 372 sub requires ($me, $dest) : ExportGen {
  120 50       336  
  120         214  
  120         192  
  120         181  
19              
20 13     13   1298 sub (@names) {
  13         28  
21 13         90 my $meta = Evo::Class::Meta->find_or_croak($dest);
22 13         87 $meta->reg_requirement($_) for @names;
23 120         645 };
24 37     37   6720 }
  37         76  
  37         134  
25              
26              
27 1 50   1 0 4 sub Over ($dest, $code, $name) : Attr {
  1 50       3  
  1         2  
  1         2  
  1         1  
  1         2  
28 1         3 Evo::Class::Meta->find_or_croak($dest)->mark_as_overridden($name);
29 37     37   5125 }
  37         76  
  37         141  
30              
31 7 50   7 1 22 sub Private ($dest, $code, $name) : Attr {
  7 50       23  
  7         12  
  7         10  
  7         13  
  7         10  
32 7         33 Evo::Class::Meta->find_or_croak($dest)->mark_as_private($name);
33 37     37   4952 }
  37         75  
  37         139  
34              
35 120 50   120 0 331 sub has ($me, $dest) : ExportGen {
  120 50       302  
  120         206  
  120         189  
  120         201  
36 374 50   374   1015 sub ($name, @opts) {
  374     373   622  
  374     277   934  
  374         574  
37 374         1177 Evo::Class::Meta->find_or_croak($dest)->reg_attr($name, @opts);
38 120         675 };
39 37     37   6280 }
  37         76  
  37         132  
40              
41 120 50   120 0 352 sub has_over ($me, $dest) : ExportGen {
  120 50       320  
  120         204  
  120         211  
  120         194  
42 4 50   4   20 sub ($name, @opts) {
  4         11  
  4         15  
  4         8  
43 4         15 Evo::Class::Meta->find_or_croak($dest)->reg_attr_over($name, @opts);
44 120         647 };
45 37     37   6291 }
  37         90  
  37         141  
46              
47 120 50   120 1 351 sub extends ($me, $dest) : ExportGen {
  120 50       310  
  120         202  
  120         195  
  120         184  
48 2     2   10 sub(@parents) {
  2         2  
49 2         11 Evo::Class::Meta->find_or_croak($dest)->extend_with($_) for @parents;
50 120         676 };
51 37     37   5939 }
  37         76  
  37         135  
52              
53 120 50   120 1 364 sub implements ($me, $dest) : ExportGen {
  120 50       316  
  120         202  
  120         207  
  120         167  
54 2     2   16 sub(@parents) {
  2         3  
55 2         8 Evo::Class::Meta->find_or_croak($dest)->check_implementation($_) for @parents;
56 120         595 };
57 37     37   5764 }
  37         74  
  37         132  
58              
59              
60 120 50   120 1 318 sub with ($me, $dest) : ExportGen {
  120 50       336  
  120         209  
  120         198  
  120         181  
61              
62 15     15   144 sub (@parents) {
  15     15   30  
        13      
63 15         135 my $meta = Evo::Class::Meta->find_or_croak($dest);
64 15         47 foreach my $parent (@parents) {
65 15         77 $meta->extend_with($parent);
66 15         64 $meta->check_implementation($parent);
67             }
68 120         640 };
69 37     37   6924 }
  37         79  
  37         133  
70              
71              
72             1;
73              
74             __END__