MKDoc-XML
view release on metacpan or search on metacpan
lib/MKDoc/XML/Decode.pm view on Meta::CPAN
$Modules{$_} ? $Modules{$_} : do {
warn "Module $_ not found - Ignoring";
();
} } @_ ], $class;
return $self;
}
sub entity_to_char
{
my $self = shift;
my $char = shift;
for (@{$self}) {
my $res = $_->process ($char);
return $res if (defined $res);
};
warn "Could not expand &$char;" if ($WARN);
return "&$char;";
}
sub process
{
(@_ == 2) or warn "MKDoc::XML::Encode::process() should be called with two arguments";
my $self = shift;
my $data = join '', map { defined $_ ? $_ : () } @_;
$data =~ s/&(#?[0-9A-Za-z]+);/$self->entity_to_char ($1)/eg;
return $data;
}
1;
__END__
=head1 NAME
MKDoc::XML::Decode - Expands XML entities
=head1 SYNOPSIS
use MKDoc::XML::Decode;
my $decode = new MKDoc::XML::Decode qw/xml xhtml numeric/;
# $xml is now "Chris' Baloon"
my $xml = MKDoc::XML::Decode->process ("Chris' Baloon");
=head1 SUMMARY
MKDoc::XML::Decode is a very simple module with pluggable entity decoding mechanism.
At the moment there are three modules:
xml - Decodes ' " > < and &
xhtml - Decodes XHTML entities such as é
numeric - Decodes numeric entities such as A
That's it.
This module and its counterpart L<MKDoc::XML::Encode> are used by L<MKDoc::XML::Dumper>
to XML-encode and XML-decode litterals.
=head1 API
=head2 my $decode_object = new MKDoc::XML::Decode (@modules);
Constructs a new decode object using the modules specified in @modules.
=head2 my $decoded = $decode_object->decode ($stuff);
Decodes $stuff and returns it into $decoded.
Any entity which is not recognized will be returned as is but will trigger a warning.
=head1 AUTHOR
Copyright 2003 - MKDoc Holdings Ltd.
Author: Jean-Michel Hiver
This module is free software and is distributed under the same license as Perl
itself. Use it at your own risk.
=head1 SEE ALSO
L<MKDoc::XML::Encode>
=cut
( run in 1.113 second using v1.01-cache-2.11-cpan-5b529ec07f3 )