2
use Test::More tests => 11;
6
eval "require Data::Dumper; import Data::Dumper";
7
$@ and eval "sub Dumper {'Install Data::Dumper for detailed diagnostics'}";
10
use HTML::StripScripts;
12
## test required attributes
15
foreach my $test ( sort keys %results ) {
23
? { p => { align => $callback } }
25
test_callback( $test, $Rules, $results{$test} );
30
attr_accept => '<p align="right">Normal<b>Bold</b></p>',
31
attr_reject => '<p>Normal<b>Bold</b></p>',
32
attr_empty => '<p align="">Normal<b>Bold</b></p>',
33
attr_change => '<p align="left">Normal<b>Bold</b></p>',
34
tag_accept => '<p align="right">Normal<b>Bold</b></p>',
36
tag_remove_tag => 'Normal<b>Bold</b>',
38
'<p style="text-align:right">Normal<b>Bold</b></p>',
40
'<blockquote align="right">Normal<b>Bold</b></blockquote>',
41
tag_change_content => '<p align="right">Replaced Content</p>',
43
'<p align="right"><span style="color:red">Normal<b>Bold</b></span></p>'
48
#===================================
50
#===================================
51
my ( $test, $Rules, $result ) = @_;
52
my $f = HTML::StripScripts->new( { Rules => $Rules } );
54
$f->input_start_document;
55
$f->input_start('<p align="right">');
56
$f->input_text('Normal');
57
$f->input_start('<b>');
58
$f->input_text('Bold');
59
$f->input_end('</b>');
60
$f->input_end('</p>');
61
$f->input_end_document;
62
is( $f->filtered_document, $result, "$test" )
63
or diag( Dumper( $Rules, $f->{_hssRules} ) );
66
#===================================
68
#===================================
69
my ( $filter, $tag, $attr, $val ) = @_;
73
#===================================
75
#===================================
76
my ( $filter, $tag, $attr, $val ) = @_;
80
#===================================
82
#===================================
83
my ( $filter, $tag, $attr, $val ) = @_;
87
#===================================
89
#===================================
90
my ( $filter, $tag, $attr, $val ) = @_;
94
#===================================
96
#===================================
97
my ( $filter, $element ) = @_;
101
#===================================
103
#===================================
104
my ( $filter, $element ) = @_;
108
#===================================
110
#===================================
111
my ( $filter, $element ) = @_;
112
$element->{tag} = '';
116
#===================================
117
sub tag_change_attrs {
118
#===================================
119
my ( $filter, $element ) = @_;
120
my $attr = $element->{attr};
121
if ( my $align = delete $attr->{align} ) {
122
$attr->{style} = join( ';',
123
grep { defined $_ } $attr->{style},
124
'text-align:' . $align );
129
#===================================
131
#===================================
132
my ( $filter, $element ) = @_;
133
$element->{tag} = 'blockquote';
137
#===================================
138
sub tag_change_content {
139
#===================================
140
my ( $filter, $element ) = @_;
141
$element->{content} = 'Replaced Content';
145
#===================================
147
#===================================
148
my ( $filter, $element ) = @_;
150
= '<span style="color:red">' . $element->{content} . '</span>';