Group
Extension

Attribute-Boolean/lib/Attribute/Boolean/Value.pm

package Attribute::Boolean::Value;

use strict;
use warnings; # FATAL => 'all';
use 5.14.0;
use utf8;

=head1 NAME

Attribute::Boolean::Value - An overridden class for a boolean value

=head1 USAGE

This is a private class for use only by Attribute::Boolean

=cut

use parent 'Exporter';
use version;
use Carp;

our $VERSION = version->declare('v1.0.7');
our @EXPORT = qw(true false);

sub true();
sub false();

use overload
   "0+"    => sub { ${$_[0]} },
   "bool"  => sub { ${$_[0]} },
   '""'    => sub { ${$_[0]} ? 'true' : 'false'},
   '!'	   => sub { ${$_[0]} ? false : true},
   '-'	   => sub { croak 'subtraction not possible'},
   '+'	   => sub { croak 'addition not possible'},
   fallback => 1
   ;

my $true  = do { bless \(my $dummy = 1), __PACKAGE__ };
my $false = do { bless \(my $dummy = 0), __PACKAGE__ };

sub true()  { $true  }
sub false() { $false }

sub TO_JSON($) {
    return $_[0] ? \1 : \0;
}

1;


Powered by Groonga
Maintained by Kenichi Ishigaki <ishigaki@cpan.org>. If you find anything, submit it on GitHub.