File Coverage

blib/lib/JE/Boolean.pm
Criterion Covered Total %
statement 36 37 97.3
branch 3 4 75.0
condition n/a
subroutine 23 24 95.8
pod 0 18 0.0
total 62 83 74.7


line stmt bran cond sub pod time code
1             package JE::Boolean;
2              
3             our $VERSION = '0.066';
4              
5              
6 101     101   35819 use strict;
  101         143  
  101         3474  
7 101     101   442 use warnings;
  101         145  
  101         7202  
8              
9             use overload fallback => 1,
10 398     398   9246 '""' => sub { qw< false true >[shift->[0]] },
11             # cmp => sub { "$_[0]" cmp $_[1] },
12 12901     12901   239532 bool => sub { shift->[0] },
13 101     101   574 '0+' => sub { shift->[0] };
  101     3   2539  
  101         3188  
  3         15  
14              
15             # ~~~ to do: make sure it numifies properly (as 0 or 1)
16              
17             require JE::Object::Boolean;
18             require JE::Number;
19             require JE::String;
20              
21              
22             sub new {
23 20235     20235 0 36050 my($class, $global, $val) = @_;
24 20235         98543 bless [!!$val, $global], $class;
25             }
26              
27              
28             sub prop {
29 3 100   3 0 742 if(@_ > 2) { return $_[2] } # If there is a value, just return it
  1         3  
30              
31 2         5 my ($self, $name) = @_;
32            
33 2         36 $$self[1]->prototype_for('Boolean')->prop($name);
34             }
35              
36             sub keys {
37 2     2 0 354 my $self = shift;
38 2         9 $$self[1]->prototype_for('Boolean')->keys;
39             }
40              
41 1     1 0 4 sub delete {1}
42              
43             sub method {
44 4     4 0 6 my $self = shift;
45 4         17 $$self[1]->prototype_for('Boolean')->prop(shift)->apply(
46             $self,$$self[1]->upgrade(@_)
47             );
48             }
49              
50              
51 5419 50   5419 0 12808 sub value { warn caller if !ref $_[0];shift->[0] }
  5419         17600  
52 0     0 0 0 sub TO_JSON { \(0+shift->[0]) }
53              
54 1     1 0 4 sub exists { !1 }
55              
56 85     85 0 330 sub typeof { 'boolean' }
57 23     23 0 139 sub class { 'Boolean' }
58 1026     1026 0 1552 sub id { 'bool:' . shift->value }
59 11     11 0 28 sub primitive { 1 }
60              
61 165     165 0 527 sub to_primitive { $_[0] }
62 4682     4682 0 12366 sub to_boolean { $_[0] }
63              
64              
65             # $_[0][1] is the global object
66 254     254 0 1401 sub to_string { JE::String->_new($_[0][1], qw< false true >[shift->[0]]) }
67 353     353 0 1796 sub to_number { JE::Number->new($_[0][1], shift->[0]) }
68 8     8 0 302 sub to_object { JE::Object::Boolean->new($_[0][1], shift) }
69              
70 1     1 0 323 sub global { $_[0][1] }
71              
72              
73              
74             1;
75             __END__