File Coverage

File:C4/Scrubber.pm
Coverage:95.7%

linestmtbrancondsubtimecode
1package C4::Scrubber;
2# This file is part of Koha.
3#
4# Koha is free software; you can redistribute it and/or modify it under the
5# terms of the GNU General Public License as published by the Free Software
6# Foundation; either version 2 of the License, or (at your option) any later
7# version.
8#
9# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
10# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
11# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License along with
14# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
15# Suite 330, Boston, MA 02111-1307 USA
16
17
4
4
4
51481
95
169
use strict;
18
4
4
4
89
73
326
use warnings;
19
4
4
4
81
65
531
use Carp;
20
4
4
4
110809
25451
209
use HTML::Scrubber;
21
22
4
4
4
423
73
47
use C4::Context;
23
4
4
4
23
5
1693
use C4::Debug;
24
25our $VERSION = 0.02;
26
27
28my %scrubbertypes = (
29    default => {}, # place holder, default settings are below as fallbacks in call to constructor
30    tag => {}, # uses defaults
31    comment => { allow => [qw( br b i em big small strong )], },
32    staff => {
33        default => [ 1 => { '*' => 1 } ],
34        comment => 1,
35    },
36);
37
38
39sub new {
40
14
733570
    shift; # ignore our class we are wrapper
41
14
128
    my $type = (@_) ? shift : 'default';
42
14
126
    if ( !exists $scrubbertypes{$type} ) {
43
4
605
        croak "New called with unrecognized type '$type'";
44    }
45
10
83
    $debug and carp "Building new Scrubber of type '$type'";
46
10
72
    my $settings = $scrubbertypes{$type};
47
10
198
    my $scrubber = HTML::Scrubber->new(
48        allow => exists $settings->{allow} ? $settings->{allow} : [],
49        rules => exists $settings->{rules} ? $settings->{rules} : [],
50        default => exists $settings->{default} ? $settings->{default} : [ 0 => { '*' => 0 } ],
51        comment => exists $settings->{comment} ? $settings->{comment} : 0,
52        process => 0,
53    );
54
10
1464
    return $scrubber;
55}
56
57
581;