File: | C4/Boolean.pm |
Coverage: | 100.0% |
line | stmt | bran | cond | sub | time | code |
---|---|---|---|---|---|---|
1 | package C4::Boolean; | |||||
2 | ||||||
3 | #package to handle Boolean values in the parameters table | |||||
4 | # Note: This is just a utility module; it should not be instantiated. | |||||
5 | ||||||
6 | ||||||
7 | # Copyright 2003 Katipo Communications | |||||
8 | # | |||||
9 | # This file is part of Koha. | |||||
10 | # | |||||
11 | # Koha is free software; you can redistribute it and/or modify it under the | |||||
12 | # terms of the GNU General Public License as published by the Free Software | |||||
13 | # Foundation; either version 2 of the License, or (at your option) any later | |||||
14 | # version. | |||||
15 | # | |||||
16 | # Koha is distributed in the hope that it will be useful, but WITHOUT ANY | |||||
17 | # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR | |||||
18 | # A PARTICULAR PURPOSE. See the GNU General Public License for more details. | |||||
19 | # | |||||
20 | # You should have received a copy of the GNU General Public License along | |||||
21 | # with Koha; if not, write to the Free Software Foundation, Inc., | |||||
22 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | |||||
23 | ||||||
24 | 61 61 61 | 1414 786 2650 | use strict; | |||
25 | 61 61 61 | 966 681 3045 | use warnings; | |||
26 | ||||||
27 | 61 61 61 | 996 552 4296 | use Carp; | |||
28 | 61 61 61 | 721 483 8037 | use base qw(Exporter); | |||
29 | ||||||
30 | our $VERSION = 0.03; | |||||
31 | our @EXPORT_OK = qw( true_p); | |||||
32 | ||||||
33 - 53 | =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 | |||||
54 | ||||||
55 | 61 | 1201 | use constant INVALID_BOOLEAN_STRING_EXCEPTION => | |||
56 | 61 61 | 19648 74222 | q{The given value does not seem to be interpretable as a Boolean value}; | |||
57 | ||||||
58 | our %strings = ( | |||||
59 | '0' => 0, '1' => 1, # C | |||||
60 | '-1' => 1, # BASIC | |||||
61 | 'nil' => 0, 't' => 1, # LISP | |||||
62 | 'false' => 0, 'true' => 1, # Pascal | |||||
63 | 'off' => 0, 'on' => 1, | |||||
64 | 'no' => 0, 'yes' => 1, | |||||
65 | 'n' => 0, 'y' => 1, | |||||
66 | ); | |||||
67 | ||||||
68 - 78 | =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 | |||||
79 | ||||||
80 | sub true_p { | |||||
81 | 12 | 43 | my $x = shift; | |||
82 | 12 | 36 | my $it; | |||
83 | 12 | 100 | if (!defined $x || ref $x ) { | |||
84 | 2 | 239 | carp INVALID_BOOLEAN_STRING_EXCEPTION; | |||
85 | 2 | 5364 | return; | |||
86 | } | |||||
87 | 10 | 27 | $x = lc $x; | |||
88 | 10 | 51 | $x =~ s/\s//g; | |||
89 | 10 | 35 | if (defined $strings{$x}) { | |||
90 | 9 | 13 | $it = $strings{$x}; | |||
91 | } else { | |||||
92 | 1 | 24 | carp INVALID_BOOLEAN_STRING_EXCEPTION; | |||
93 | } | |||||
94 | 10 | 366 | return $it; | |||
95 | } | |||||
96 | ||||||
97 | 1; |