File Coverage

blib/lib/Tree/Visualize/Factory.pm
Criterion Covered Total %
statement 124 125 99.2
branch 5 8 62.5
condition 1 3 33.3
subroutine 36 37 97.3
pod 2 2 100.0
total 168 175 96.0


line stmt bran cond sub pod time code
1              
2             package Tree::Visualize::Factory;
3              
4 6     6   48 use strict;
  6         10  
  6         196  
5 6     6   30 use warnings;
  6         14  
  6         238  
6              
7             our $VERSION = '0.01';
8              
9 6     6   52 use Tree::Visualize::Exceptions;
  6         28  
  6         2117  
10              
11             sub new {
12 77     77 1 132 my ($_class, $product) = @_;
13 77   33     252 my $class = ref($_class) || $_class;
14 77         90 my $factory = {};
15 77         150 bless($factory, $class);
16 77         189 $factory->_init($product);
17 77         307 return $factory;
18             }
19              
20             sub _init {
21 77     77   89 my ($self, $product) = @_;
22 77         231 $self->{product} = $product;
23             }
24              
25             sub get {
26 75     75 1 235 my ($self, %path) = @_;
27 75 50       130 (%path) || throw Tree::Visualize::InsufficientArguments;
28 75         95 my $package_name = "Tree::Visualize::";
29 75         96 $package_name .= $path{output};
30 75         76 $package_name .= "::";
31 75         94 $package_name .= $self->{product};
32 75         72 $package_name .= "::";
33 75         242 $package_name .= $self->_resolvePackage(%path);
34 75     3   4662 eval "use $package_name";
  3     3   2659  
  3     3   7  
  3     3   46  
  3     3   686  
  3     3   5  
  3     3   42  
  3     3   19  
  3     3   5  
  3     3   36  
  3     3   16  
  3     3   4  
  3     3   30  
  3     3   18  
  3     3   4  
  3     3   31  
  3     2   619  
  3     2   5  
  3     2   42  
  3     2   756  
  3     2   4  
  3     2   38  
  3     2   15  
  3     2   5  
  3     2   31  
  3     2   16  
  3     2   4  
  3     2   41  
  3     2   15  
  3     1   3  
  3         28  
  3         14  
  3         5  
  3         27  
  3         16  
  3         6  
  3         28  
  3         13  
  3         4  
  3         27  
  3         15  
  3         4  
  3         29  
  3         17  
  3         3  
  3         32  
  3         16  
  3         5  
  3         32  
  2         9  
  2         12  
  2         21  
  2         13  
  2         5  
  2         22  
  2         10  
  2         2  
  2         18  
  2         10  
  2         2  
  2         18  
  2         77  
  2         3  
  2         18  
  2         10  
  2         2  
  2         20  
  2         10  
  2         2  
  2         17  
  2         11  
  2         8  
  2         20  
  2         9  
  2         9  
  2         17  
  2         9  
  2         2  
  2         18  
  2         9  
  2         3  
  2         18  
  2         9  
  2         4  
  2         18  
  2         11  
  2         5  
  2         18  
  1         4  
  1         2  
  1         9  
35 75 50       189 throw Tree::Visualize::OperationFailed ($@) if $@;
36 75         68 my @args;
37 75 100       151 @args = @{$path{args}} if exists $path{args};
  46         98  
38 75         114 my $instance = eval { $package_name->new(@args) };
  75         265  
39 75 50       134 throw Tree::Visualize::OperationFailed ($@) if $@;
40 75         278 return $instance;
41             }
42              
43 0     0   0 sub _resolvePackage { throw Tree::Visualize::MethodNotImplemented }
44              
45             1;
46              
47             __END__