Koha/C4/Boolean.pm
Colin Campbell f08b33a912 Bug 5448: Refactor Boolean.pm
Remove unnecesssary export
Use Exporter according to best practices
Use Carp not warn so we know where the error string came from
Don't create warnings manipulating undefined input
Replace package variables by lexicals

Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2010-12-02 08:51:33 +13:00

106 lines
2.5 KiB
Perl

package C4::Boolean;
#package to handle Boolean values in the parameters table
# Note: This is just a utility module; it should not be instantiated.
# Copyright 2003 Katipo Communications
#
# This file is part of Koha.
#
# Koha is free software; you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with Koha; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
use strict;
use warnings;
use Carp;
use base qw(Exporter);
our $VERSION = 0.03;
our @EXPORT_OK = qw( true_p);
=head1 NAME
C4::Boolean - Convenience function to handle boolean values
in the parameter table
=head1 SYNOPSIS
use C4::Boolean;
=head1 DESCRIPTION
In the parameter table, there are various Boolean values that
variously require a 0/1, no/yes, false/true, or off/on values.
This module aims to provide scripts a means to interpret these
Boolean values in a consistent way which makes common sense.
=head1 FUNCTIONS
=over 2
=cut
use constant INVALID_BOOLEAN_STRING_EXCEPTION =>
q{The given value does not seem to be interpretable as a Boolean value};
our %strings = (
'0' => 0, '1' => 1, # C
'-1' => 1, # BASIC
'nil' => 0, 't' => 1, # LISP
'false' => 0, 'true' => 1, # Pascal
'off' => 0, 'on' => 1,
'no' => 0, 'yes' => 1,
'n' => 0, 'y' => 1,
);
=item true_p
if ( C4::Boolean::true_p(C4::Context->preference("insecure")) ) {
...
}
Tries to interpret the passed string as a Boolean value. Returns
the value if the string can be interpreted as such; otherwise an
exception is thrown.
=cut
sub true_p {
my $x = shift;
my $it;
if (!defined $x || ref $x ) {
carp INVALID_BOOLEAN_STRING_EXCEPTION;
return;
}
$x = lc $x;
$x =~ s/\s//g;
if (defined $strings{$x}) {
$it = $strings{$x};
} else {
carp INVALID_BOOLEAN_STRING_EXCEPTION;
}
return $it;
}
1;
__END__
=back
=head1 AUTHOR
Koha Development Team <http://koha-community.org/>
=cut