Bug 28653: Add new method RefreshIssuesTable
[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
8 # under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3 of the License, or
10 # (at your option) any later version.
11 #
12 # Koha is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with Koha; if not, see <http://www.gnu.org/licenses>.
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