XML-Filter-Glossary
view release on metacpan or search on metacpan
lib/XML/Filter/Glossary.pm view on Meta::CPAN
$self->{'__cache'}{$keyword} = $self->{'__lookup'}->result();
}
return $self->{'__cache'}{$keyword};
}
sub process_result {
my $self = shift;
my $result = shift;
my $cdata = undef;
my $markup = undef;
my $element = undef;
# Hack Until I figure where to tweak
# the REX expressions. Ick ick ick.
$$result =~ s/></> </gm;
while (not $$result =~ m/\G\z/gc) {
$$result =~ m/\G($TextSE)?($MarkupSPE)*/gcm;
# print "PARSE [$1] [$2]\n";
if ($element) {
$markup .= $1;
} else {
$cdata .= $1;
}
if ($2) {
if ($cdata) {
$self->SUPER::characters({Data=>$cdata});
# print "CDATA '$cdata'\n";
$cdata = undef;
}
my $_markup = $2;
$markup .= $_markup;
$_markup =~ /^<(\/)?([^\s>]+)/;
if (($1) && ($element eq $2)) {
# print "MARKUP '$markup'\n";
lib/XML/Filter/Glossary.pm view on Meta::CPAN
$markup = undef;
$element = undef;
}
}
}
}
if ($cdata) {
$self->SUPER::characters({Data=>$cdata});
}
if ($markup) {
print STDERR "WARNING\nThere was a bunch of unbalanced markup leftover: '$markup'\n";
$self->SUPER::characters({Data=>$markup});
}
return 1;
}
( run in 1.052 second using v1.01-cache-2.11-cpan-995e09ba956 )