Bug 13937: Fix RPN conversion
[koha.git] / Koha / Util / Normalize.pm
1 package Koha::Util::Normalize;
2
3 # Copyright 2016 Koha Development Team
4 #
5 # This file is part of Koha.
6 #
7 # Koha is free software; you can redistribute it and/or modify it under the
8 # terms of the GNU General Public License as published by the Free Software
9 # Foundation; either version 3 of the License, or (at your option) any later
10 # version.
11 #
12 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License along
17 # with Koha; if not, write to the Free Software Foundation, Inc.,
18 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
20 use Modern::Perl;
21
22 use parent qw( Exporter );
23
24 our @EXPORT = qw(
25   legacy_default
26   remove_spaces
27   upper_case
28   lower_case
29   ISBN
30 );
31
32 =head1 NAME
33
34 Koha::Util::Normalize - utility class with string normalization routines
35
36 =head1 METHODS
37
38 =head2 legacy_default
39
40 Default normalization function
41
42 =cut
43
44 sub legacy_default {
45     my ( $string ) = @_;
46     return if !defined( $string );
47
48     $string = uc $string;
49
50     $string =~ s/[.;:,\]\[\)\(\/'"]//g;
51     $string =~ s/^\s+//;
52     $string =~ s/\s+$//;
53     $string =~ s/\s+/ /g;
54
55     return $string;
56 }
57
58 =head2 remove_spaces
59
60 Normalization function removing spaces
61
62 =cut
63
64 sub remove_spaces {
65     my ( $string ) = @_;
66     return if !defined( $string );
67
68     $string =~ s/\s+//g;
69
70     return $string;
71 }
72
73 =head2 upper_case
74
75 Normalization function converting characters into upper-case
76
77 =cut
78
79 sub upper_case {
80     my ( $string ) = @_;
81     return if !defined( $string );
82
83     $string = uc $string;
84
85     return $string;
86 }
87
88 =head2 lower_case
89
90 Normalization function converting characters into lower-case
91
92 =cut
93
94 sub lower_case {
95     my ( $string ) = @_;
96     return if !defined( $string );
97
98     $string = lc $string;
99
100     return $string;
101 }
102
103 =head2 ISBN
104
105 Normalization function converting ISBN strings to ISBN13
106 If string is not a valid ISBN we pass it through unaltered
107
108 =cut
109
110 sub ISBN {
111     my ( $string ) = @_;
112     return if !defined( $string );
113
114     my $isbn = C4::Koha::NormalizeISBN({
115         isbn => $string,
116         format => 'ISBN-13',
117         strip_hyphens  => 1,
118         return_invalid => 1,
119     });
120
121     return $isbn;
122 }
123
124 1;
125 __END__
126
127 =head1 AUTHOR
128
129 Koha Development Team <http://koha-community.org/>
130
131 Tomas Cohen Arazi <tomascohen@theke.io>
132
133 =cut