File Coverage

blib/lib/Bot/Cobalt/Core/Role/Singleton.pm
Criterion Covered Total %
statement 23 24 95.8
branch 2 2 100.0
condition 3 6 50.0
subroutine 7 8 87.5
pod 3 4 75.0
total 38 44 86.3


line stmt bran cond sub pod time code
1             package Bot::Cobalt::Core::Role::Singleton;
2             $Bot::Cobalt::Core::Role::Singleton::VERSION = '0.021001';
3 5     5   4864 use Carp 'confess';
  5         7  
  5         223  
4 5     5   18 use strictures 2;
  5         22  
  5         152  
5              
6 5     5   656 use Moo::Role;
  5         8  
  5         27  
7              
8 5     5   1069 no strict 'refs';
  5         7  
  5         793  
9              
10             sub instance {
11 3     3 1 2208 my $class = $_[0];
12              
13 3         3 my $this_obj = \${$class.'::_singleton'};
  3         15  
14            
15 3 100       19 defined $$this_obj ? $$this_obj
16             : ( $$this_obj = $class->new(@_[1 .. $#_]) )
17             }
18              
19             sub has_instance {
20 8   66 8 1 308 my $class = ref $_[0] || $_[0];
21 8         11 !! ${$class.'::_singleton'};
  8         62  
22             }
23              
24             sub clear_instance {
25 1   33 1 1 4 my $class = ref $_[0] || $_[0];
26 1         1 ${$class.'::_singleton'} = undef;
  1         5  
27 1         2 1
28             }
29              
30             sub is_instanced {
31 0     0 0   confess "is_instanced is deprecated; use has_instance"
32             }
33              
34             1;
35             __END__