View | Details | Raw Unified | Return to bug 33749
Collapse All | Expand All

(-)a/Koha/Filter/MARC/TrimFields.pm (+71 lines)
Line 0 Link Here
1
package Koha::Filter::MARC::TrimFields;
2
3
# Copyright 2023 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
=head1 NAME
21
22
Koha::Filter::MARC::TrimFields - Trims MARC::Record object data fields.
23
24
=head1 SYNOPSIS
25
26
    my $p = Koha::RecordProcessor->new({ filters => ['TrimFields'] });
27
28
    my $metadata = Koha::Biblio::Metadatas->find($biblio_id);
29
    my $record   = $metadata->record;
30
31
    $p->process($record);
32
33
=head1 DESCRIPTION
34
35
Filter to trim MARC::Record object data fields.
36
37
=cut
38
39
use Modern::Perl;
40
41
use base qw(Koha::RecordProcessor::Base);
42
our $NAME = 'TrimFields';
43
44
=head2 filter
45
46
Trim MARC::Record object data fields.
47
48
=cut
49
50
sub filter {
51
    my ( $self, $record ) = @_;
52
53
    return
54
      unless $record and ref($record) eq 'MARC::Record';
55
56
    foreach my $field ( $record->fields ) {
57
        unless ( $field->is_control_field ) {
58
            foreach my $subfield ( $field->subfields ) {
59
                my $key   = $subfield->[0];
60
                my $value = $subfield->[1];
61
                $value =~ s/[\n\r]+/ /g;
62
                $value =~ s/^\s+|\s+$//g;
63
                $field->add_subfields( $key => $value ); # add subfield to the end of the subfield list
64
                $field->delete_subfield( pos => 0 ); # delete the subfield at the top of the subfield list
65
            }
66
        }
67
    }
68
    return $record;
69
}
70
71
1;
(-)a/t/Koha_MetadataRecord.t (-2 / +3 lines)
Lines 22-27 use Modern::Perl; Link Here
22
use Test::More tests => 6;
22
use Test::More tests => 6;
23
use Test::Warn;
23
use Test::Warn;
24
24
25
use Koha::RecordProcessor;
25
use MARC::Record;
26
use MARC::Record;
26
27
27
BEGIN {
28
BEGIN {
Lines 156-162 subtest "stripWhitespaceChars() tests" => sub { Link Here
156
        [ '521', ' ', ' ', a => "This is a\t test!\t" ],
157
        [ '521', ' ', ' ', a => "This is a\t test!\t" ],
157
    );
158
    );
158
159
159
    $record = Koha::MetadataRecord::stripWhitespaceChars( $record );
160
    my $p = Koha::RecordProcessor->new({ filters => ['TrimFields'] });
161
    $p->process( $record );
160
162
161
    my $get520a = $record->subfield('520','a');
163
    my $get520a = $record->subfield('520','a');
162
    is( $get520a, "This is a test!", "Whitespace characters are appropriately stripped or replaced with spaces" );
164
    is( $get520a, "This is a test!", "Whitespace characters are appropriately stripped or replaced with spaces" );
163
- 

Return to bug 33749