File Coverage

blib/lib/DBIx/DataModel/Meta/Type.pm
Criterion Covered Total %
statement 37 37 100.0
branch 1 2 50.0
condition n/a
subroutine 11 11 100.0
pod 0 1 0.0
total 49 51 96.0


line stmt bran cond sub pod time code
1             package DBIx::DataModel::Meta::Type;
2 5     5   6824 use strict;
  5         28  
  5         232  
3 5     5   44 use warnings;
  5         10  
  5         421  
4 5     5   33 use parent "DBIx::DataModel::Meta";
  5         9  
  5         38  
5 5     5   391 use DBIx::DataModel;
  5         9  
  5         37  
6 5     5   27 use DBIx::DataModel::Meta::Utils qw/define_readonly_accessors does/;
  5         12  
  5         482  
7 5     5   34 use DBIx::DataModel::Carp;
  5         8  
  5         38  
8              
9 5     5   364 use Scalar::Util qw/weaken/;
  5         11  
  5         298  
10 5     5   31 use Params::Validate qw/validate_with OBJECT SCALAR HASHREF/;
  5         10  
  5         342  
11 5     5   27 use namespace::clean;
  5         12  
  5         38  
12              
13 5     5   1892 {no strict 'refs'; *CARP_NOT = \@DBIx::DataModel::CARP_NOT;}
  5         11  
  5         1518  
14              
15             sub new {
16 6     6 0 20 my $class = shift;
17              
18             # parse arguments and create $self
19 6         180 my $self = validate_with(
20             params => \@_,
21             spec => {
22             schema => {type => OBJECT, isa => "DBIx::DataModel::Meta::Schema"},
23             name => {type => SCALAR},
24             handlers => {type => HASHREF},
25             },
26             allow_extra => 0,
27             );
28              
29 6         40 while (my ($name, $body) = each %{$self->{handlers}}) {
  19         213  
30 13 50       47 does($body, 'CODE')
31             or croak "handler body for $name is not a code reference";
32             }
33              
34             # avoid circular references
35 6         23 weaken $self->{schema};
36              
37 6         27 bless $self, $class;
38             }
39              
40              
41             # accessor methods
42             define_readonly_accessors(__PACKAGE__, qw/schema name handlers/);
43              
44              
45             1;
46              
47             __END__