File Coverage

blib/lib/Data/Sah/Object/Schema.pm
Criterion Covered Total %
statement 51 54 94.4
branch 8 8 100.0
condition 1 2 50.0
subroutine 8 9 88.8
pod 6 6 100.0
total 74 79 93.6


line stmt bran cond sub pod time code
1             package Data::Sah::Object::Schema;
2              
3             our $DATE = '2014-07-28'; # DATE
4             our $VERSION = '0.01'; # VERSION
5              
6 1     1   29 use 5.010;
  1         4  
  1         44  
7 1     1   7 use strict;
  1         1  
  1         38  
8 1     1   5 use warnings;
  1         3  
  1         461  
9              
10             sub new {
11 7     7 1 13 my ($class, $sch, $is_normalized) = @_;
12 7   50     20 $sch //= [undef, {}, {}];
13              
14 7 100       16 unless ($is_normalized) {
15 6         954 require Data::Sah::Normalize;
16 6         2131 $sch = Data::Sah::Normalize::normalize_schema($sch);
17             }
18              
19 7         247 my $obj = \$sch;
20 7         31 bless $obj, $class;
21             }
22              
23             sub type {
24 9     9 1 33 my $self = shift;
25 9 100       24 if (@_) {
26 1         2 my $old = ${$self}->[0];
  1         3  
27 1         2 ${$self}->[0] = $_[0];
  1         3  
28 1         4 return $old;
29             } else {
30 8         9 return ${$self}->[0];
  8         48  
31             }
32             }
33              
34             sub clause {
35 10     10 1 18 my $self = shift;
36 10         13 my $name = shift;
37 10 100       23 if (@_) {
38 1         2 my $old = ${$self}->[1]{$name};
  1         3  
39 1         3 ${$self}->[1]{$name} = $_[0];
  1         3  
40 1         2 return $old;
41             } else {
42 9         11 return ${$self}->[1]{$name};
  9         644  
43             }
44             }
45              
46             sub req {
47 4     4 1 8 my $self = shift;
48 4 100       12 if (@_) {
49 1         2 my $old = ${$self}->[1]{req};
  1         4  
50 1         2 ${$self}->[1]{req} = $_[0];
  1         2  
51 1         2 return $old;
52             } else {
53 3         4 return ${$self}->[1]{req};
  3         24  
54             }
55             }
56              
57             sub delete_clause {
58 1     1 1 2 my $self = shift;
59 1         2 my $name = shift;
60 1         2 my $old = ${$self}->[1]{$name};
  1         3  
61 1         2 delete ${$self}->[1]{$name};
  1         4  
62 1         2 return $old;
63             }
64              
65             sub as_struct {
66 0     0 1   my $self = shift;
67 0           ${$self};
  0            
68             }
69              
70             1;
71             # ABSTRACT: Represent Sah schema
72              
73             __END__