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.021002';
3 5     5   4955 use Carp 'confess';
  5         10  
  5         256  
4 5     5   20 use strictures 2;
  5         28  
  5         177  
5              
6 5     5   802 use Moo::Role;
  5         7  
  5         30  
7              
8 5     5   1117 no strict 'refs';
  5         8  
  5         806  
9              
10             sub instance {
11 3     3 1 2671 my $class = $_[0];
12              
13 3         5 my $this_obj = \${$class.'::_singleton'};
  3         19  
14            
15 3 100       22 defined $$this_obj ? $$this_obj
16             : ( $$this_obj = $class->new(@_[1 .. $#_]) )
17             }
18              
19             sub has_instance {
20 8   66 8 1 461 my $class = ref $_[0] || $_[0];
21 8         11 !! ${$class.'::_singleton'};
  8         65  
22             }
23              
24             sub clear_instance {
25 1   33 1 1 5 my $class = ref $_[0] || $_[0];
26 1         2 ${$class.'::_singleton'} = undef;
  1         5  
27 1         3 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__