NAME

Module::Generic::Boolean - Boolean Representation Class

SYNOPSIS

my $bool = Module::Generic::Boolean->true;
# or
my $bool = Module::Generic::Boolean::true;
# Now I have a Module::Generic::Boolean object

# Returns 1
if( $bool )
{
    # Do something
}

my $hash =
{
    name => 'John Doe',
    active => $bool,
};
# Converting to json
print( JSON->new->encode( $hash ), "\n" );
# Would result in
{
    name: "Jogn Doe",
    active: true
}

VERSION

v1.1.1

DESCRIPTION

This a class/package to represent boolean value and make sure they are recognised interchangeably as perl boolean, i.e. 1 or 0, or as JSON bool, i.e. true or false

The code is taken and adapted from part of JSON module.

METHODS

as_array

Returns an Module::Generic::Array object with the current boolean value as its only entry.

my $true = Module::Generic::Boolean->true;
my $a = $true->as_array;
say $a->[0]; # 1

as_number

Returns the current boolean value (1 or 0) as a Module::Generic::Number object.

as_scalar

Returns the current boolean value (1 or 0) as a Module::Generic::Scalar object.

defined

Returns true.

true

This returns a perl true value i.e. 1 or true when added into JSON

false

This returns a perl false value i.e. 0 or false when added into JSON

is_bool

Provided with a value and this returns true if it is a Module::Generic::Boolean object

is_true

Provided with a value and this returns true if it is a Module::Generic::Boolean object and this is true.

is_false

Provided with a value and this returns true if it is a Module::Generic::Boolean object and this is false.

TO_JSON

This is called by JSON to transform an object into json data format.

It returns \1 if true, or \0 otherwise. Those values are understood by JSON and transcoded accordingly.

SERIALISATION

Serialisation by CBOR, Sereal and Storable::Improved (or the legacy Storable) is supported by this package. To that effect, the following subroutines are implemented: FREEZE, THAW, STORABLE_freeze and STORABLE_thaw

AUTHOR

Jacques Deguest <jack@deguest.jp>

COPYRIGHT & LICENSE

Copyright (c) 2000-2024 DEGUEST Pte. Ltd.

You can use, copy, modify and redistribute this package and associated files under the same terms as Perl itself.