###
### Copyright 2002-2003 University of Illinois Board of Trustees
### Copyright 2002-2003 Mark D. Roth
### All rights reserved.
###
### Config::Objective::Boolean - boolean data type for Config::Objective
###
### Mark D. Roth <roth@uiuc.edu>
### Campus Information Technologies and Educational Services
### University of Illinois at Urbana-Champaign
###
package Config::Objective::Boolean;
use strict;
#use overload
# 'bool' => \&get
# ;
use Config::Objective::DataType;
our @ISA = qw(Config::Objective::DataType);
###############################################################################
### utility function to interpret boolean values
###############################################################################
sub _boolean
{
my ($self, $value) = @_;
if (!defined($value)
|| $value =~ m/^(yes|on|true|1)$/i)
{
return 1;
}
elsif ($value =~ m/^(no|off|false|0)$/i)
{
return 0;
}
die "non-boolean value '$value' specified for boolean variable\n";
}
###############################################################################
### set method
###############################################################################
sub set
{
my ($self, $value) = @_;
# print "==> Boolean::set($value)\n";
$self->{'value'} = $self->_boolean($value);
}
###############################################################################
### equals method
###############################################################################
sub equals
{
my ($self, $value) = @_;
return ($self->{'value'} == $self->_boolean($value));
}
###############################################################################
### cleanup and documentation
###############################################################################
1;
__END__
=head1 NAME
Config::Objective::Boolean - boolean data type class for Config::Objective
=head1 SYNOPSIS
use Config::Objective;
use Config::Objective::Boolean;
my $conf = Config::Objective->new('filename', {
'boolobj' => Config::Objective::Boolean->new()
});
=head1 DESCRIPTION
The B<Config::Objective::Boolean> module provides a class that
represents a boolean value in an object so that it can be used with
B<Config::Objective>. Its methods can be used to manipulate the
encapsulated boolean value from the config file.
The B<Config::Objective::Boolean> class is derived from the
B<Config::Objective::DataType> class, but it defines/overrides the
following methods:
=over 4
=item set()
Sets the object's value to the supplied value. The value must be one
of the following: "yes", "no", "on", "off", "true", "false", 1, or 0.
=item equals()
Returns true if the argument equals the object's value. If the argument
is not defined, it is treated as if it were true.
=back
=head1 AUTHOR
Mark D. Roth E<lt>roth@uiuc.eduE<gt>
=head1 SEE ALSO
L<perl>
L<Config::Objective>
L<Config::Objective::DataType>
=cut
syntax highlighted by Code2HTML, v. 0.9.1