File Coverage

blib/lib/Valiemon/Attributes.pm
Criterion Covered Total %
statement 27 30 90.0
branch 4 4 100.0
condition n/a
subroutine 8 10 80.0
pod 0 3 0.0
total 39 47 82.9


line stmt bran cond sub pod time code
1             package Valiemon::Attributes;
2 19     19   89 use strict;
  19         42  
  19         611  
3 19     19   90 use warnings;
  19         25  
  19         787  
4 19     19   90 use utf8;
  19         28  
  19         167  
5              
6 19     19   562 use Carp qw(croak);
  19         28  
  19         1374  
7 19     19   95 use Exporter qw(import);
  19         39  
  19         772  
8 19     19   11653 use Class::Load qw(is_class_loaded try_load_class);
  19         392651  
  19         1634  
9 19     19   174 use Valiemon::ValidationError;
  19         34  
  19         4218  
10              
11             our @EXPORT_OK = qw(attr);
12              
13             sub attr {
14 364     364 0 508 my ($name) = @_;
15 364         741 $name =~ s/^\$//; # TODO have package mappings instead of dinamic load
16 364         1415 my $class = join '::', __PACKAGE__, (ucfirst $name);
17 364 100       1067 return $class if is_class_loaded($class);
18              
19 52         2981 my ($is_success) = try_load_class($class);
20 52 100       14448 return $is_success ? $class : undef;
21             }
22              
23             sub attr_name {
24 0     0 0   croak '`attr_name` method must be implemented';
25             }
26              
27             sub is_valid {
28 0     0 0   my ($class, $context, $schema, $data) = @_;
29 0           croak '`is_valid` method must be implemented';
30             }
31              
32             1;