File Coverage

blib/lib/TableData/Object.pm
Criterion Covered Total %
statement 22 24 91.6
branch 8 10 80.0
condition n/a
subroutine 6 6 100.0
pod 2 2 100.0
total 38 42 90.4


line stmt bran cond sub pod time code
1             package TableData::Object;
2              
3             our $AUTHORITY = 'cpan:PERLANCAR'; # AUTHORITY
4             our $DATE = '2020-05-29'; # DATE
5             our $DIST = 'TableData-Object'; # DIST
6             our $VERSION = '0.112'; # VERSION
7              
8 4     4   2269 use 5.010001;
  4         34  
9 4     4   19 use strict;
  4         8  
  4         83  
10 4     4   19 use warnings;
  4         13  
  4         135  
11              
12 4     4   2017 use Data::Check::Structure qw(is_aos is_aoaos is_aohos);
  4         4059  
  4         1027  
13              
14             require Exporter;
15             our @ISA = qw(Exporter);
16             our @EXPORT_OK = qw(table);
17              
18 49     49 1 23472 sub table { __PACKAGE__->new(@_) }
19              
20             sub new {
21 49     49 1 107 my ($class, $data, $spec) = @_;
22 49 50       247 if (!defined($data)) {
    100          
    100          
    100          
    50          
23 0         0 die "Please specify table data";
24             } elsif (ref($data) eq 'HASH') {
25 17         572 require TableData::Object::hash;
26 17         60 TableData::Object::hash->new($data);
27             } elsif (is_aoaos($data, {max=>10})) {
28 9         990 require TableData::Object::aoaos;
29 9         29 TableData::Object::aoaos->new($data, $spec);
30             } elsif (is_aohos($data, {max=>10})) {
31 8         1276 require TableData::Object::aohos;
32 8         38 TableData::Object::aohos->new($data, $spec);
33             } elsif (ref($data) eq 'ARRAY') {
34 15         1027 require TableData::Object::aos;
35 15         42 TableData::Object::aos->new($data);
36             } else {
37 0           die "Unknown table data form, please supply array of scalar, ".
38             "array of array-of-scalar, or array of hash-of-scalar";
39             }
40             }
41              
42             1;
43             # ABSTRACT: Manipulate data structure via table object
44              
45             __END__