Qgoda
view release on metacpan or search on metacpan
lib/Qgoda/Processor/HTMLFilter.pm view on Meta::CPAN
bless $self, $class;
}
sub process {
my ($self, $content, $asset) = @_;
my $output = '';
my $handler = sub {
my ($event, $text, $tagname, $attr, $attrseq, $is_cdata) = @_;
my $chunk;
if ('start_document' eq $event || 'end_document' eq $event) {
$chunk = $output;
$output = '';
} else {
$chunk = $text;
}
foreach my $plug_in (@{$self->{__handlers}->{$event}}) {
$chunk = $plug_in->$event(
$chunk,
event => $event,
text => $text,
output => \$output,
text => $text,
tagname => $tagname,
attr => $attr,
attrseq => $attrseq,
is_cdata => $is_cdata,
asset => $asset,
);
}
$output .= $chunk;
};
my $parser = HTML::Parser->new(
comment_h => [$handler, 'event, text'],
declaration_h => [$handler, 'event, text'],
start_h => [$handler, 'event, text, tagname, attr, attrseq, is_cdata'],
end_h => [$handler, 'event, text, tagname'],
process_h => [$handler, 'event, text'],
text_h => [$handler, 'event, text'],
start_document_h => [$handler, 'event'],
);
$parser->empty_element_tags(1);
$parser->parse($content);
# FIXME! Why can that handler not be registered like the others?
$handler->('end_document', $output);
( run in 0.353 second using v1.01-cache-2.11-cpan-454fe037f31 )