some minor bugfixes, templates improvements & zebra default config file changes
[koha.git] / C4 / Boolean.pm
1 package C4::Boolean;
2
3 # $Id$
4
5 #package to handle Boolean values in the parameters table
6 # Note: This is just a utility module; it should not be instantiated.
7
8
9 # Copyright 2003 Katipo Communications
10 #
11 # This file is part of Koha.
12 #
13 # Koha is free software; you can redistribute it and/or modify it under the
14 # terms of the GNU General Public License as published by the Free Software
15 # Foundation; either version 2 of the License, or (at your option) any later
16 # version.
17 #
18 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
19 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
20 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
21 #
22 # You should have received a copy of the GNU General Public License along with
23 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
24 # Suite 330, Boston, MA  02111-1307 USA
25
26 use strict;
27 use POSIX;
28 require Exporter;
29
30 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
31
32 # set the version for version checking
33 $VERSION = 0.01;
34
35 =head1 NAME
36
37 C4::Boolean - Convenience functions to handle boolean values
38 in the parameter table
39
40 =head1 SYNOPSIS
41
42   use C4::Boolean;
43
44 =head1 DESCRIPTION
45
46 In the parameter table, there are various Boolean values that
47 variously require a 0/1, no/yes, false/true, or off/on values.
48 This module aims to provide scripts a means to interpret these
49 Boolean values in a consistent way which makes common sense.
50
51 =head1 FUNCTIONS
52
53 =over 2
54
55 =cut
56
57 @ISA = qw(Exporter);
58 @EXPORT = (
59         &INVALID_BOOLEAN_STRING_EXCEPTION
60     );
61
62 @EXPORT_OK = qw(
63         true_p
64     );
65
66 sub INVALID_BOOLEAN_STRING_EXCEPTION ()
67     { 'The given value does not seem to be interpretable as a Boolean value' }
68
69 use vars qw( %strings );
70
71 %strings = (
72    '0'     => 0,        '1'     => 1,   # C
73                         '-1'    => 1,   # BASIC
74    'nil'   => 0,        't'     => 1,   # LISP
75    'false' => 0,        'true'  => 1,   # Pascal
76    'off'   => 0,        'on'    => 1,
77    'no'    => 0,        'yes'   => 1,
78    'n'     => 0,        'y'     => 1,
79 );
80
81 =item true_p
82
83     if ( C4::Boolean::true_p(C4::Context->preference("insecure")) ) {
84         ...
85     }
86
87 Tries to interpret the passed string as a Boolean value. Returns
88 the value if the string can be interpreted as such; otherwise an
89 exception is thrown.
90
91 =cut
92
93 sub true_p ($) {
94     my($x) = @_;
95     my $it;
96     if (!defined $x || ref($x) ne '') {
97         die INVALID_BOOLEAN_STRING_EXCEPTION;
98     }
99     $x = lc($x);
100     $x =~ s/\s//g;
101     if (defined $strings{$x}) {
102         $it = $strings{$x};
103     } else {
104         die INVALID_BOOLEAN_STRING_EXCEPTION;
105     }
106     return $it;
107 }
108
109
110 #---------------------------------
111
112 END { }       # module clean-up code here (global destructor)
113
114 1;
115 __END__
116
117 =back
118
119 =head1 AUTHOR
120
121 Koha Developement team <info@koha.org>
122
123 =cut