/usr/share/perl5/HTML/Entities/Numbered.pm is in libhtml-entities-numbered-perl 0.04-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 | package HTML::Entities::Numbered;
use strict;
use HTML::Entities::Numbered::Table;
use base qw(Exporter);
use vars qw($VERSION @EXPORT %DECIMALS %ENTITIES);
@EXPORT = qw(
name2decimal name2hex name2decimal_xml name2hex_xml decimal2name hex2name
);
$VERSION = '0.04';
BEGIN { %ENTITIES = reverse %DECIMALS }
sub name2decimal {
my $content = shift;
$content =~ s/(&[a-z0-9]+;)/_convert2num($1, '&#%d;')/ieg;
return $content;
}
sub name2hex {
my $content = shift;
$content =~ s/(&[a-z0-9]+;)/_convert2num($1, '&#x%X;')/ieg;
return $content;
}
sub name2decimal_xml {
my $content = shift;
$content =~ s{(&(?:(lt|gt|amp|quot|apos)|[a-z0-9]+);)}
{ $2 ? $1 : _convert2num($1, '&#%d;') }ieg;
return $content;
}
sub name2hex_xml {
my $content = shift;
$content =~ s{(&(?:(lt|gt|amp|quot|apos)|[a-z0-9]+);)}
{ $2 ? $1 : _convert2num($1, '&#x%X;') }ieg;
return $content;
}
sub decimal2name {
my $content = shift;
$content =~ s/(&#\d+;)/_convert2name($1)/ieg;
return $content;
}
sub hex2name {
my $content = shift;
$content =~ s/(&#x[a-f0-9]+;)/_convert2name($1)/ieg;
return $content;
}
sub _convert2num {
my($reference, $format) = @_;
my($name) = $reference =~ /^&([a-z0-9]+);$/i;
return exists $DECIMALS{$name} ?
sprintf($format, $DECIMALS{$name}) : $reference;
}
sub _convert2name {
my $reference = shift;
my($is_hex, $decimal) = $reference =~ /^&#(x?)([a-f0-9]+);$/i;
$decimal = sprintf('%d', ($is_hex ? hex($decimal) : $decimal));
return exists $ENTITIES{$decimal} ?
sprintf('&%s;', $ENTITIES{$decimal}) : $reference;
}
1;
__END__
=head1 NAME
HTML::Entities::Numbered - Conversion of numbered HTML entities
=head1 SYNOPSIS
use HTML::Entities::Numbered;
$html = 'Hi Honey<b>♥</b>';
# convert named HTML entities to numbered (decimal)
$decimal = name2decimal($html); # Hi Honey<b>♥</b>
# to numbered (hexadecimal)
$hex = name2hex($html); # Hi Honey<b>♥</b>
$content = 'Copyright © Larry Wall';
# convert numbered HTML entities (decimal) to named
$name1 = decimal2name($content); # Copyright © Larry Wall
$content = 'Copyright © Larry Wall';
# convert numbered HTML entitites (hexadecimal) to named
$name2 = hex2name($content); # Copyright © Larry Wall
$xml = '"Give me ¥10,000" > cherie♠';
# convert named HTML entities to numbered
# except valid XML entities (decimal)
$decimal = name2decimal_xml($xml); # "Give me ¥10,000"
# > cherie♠
# to numbered except valid XML entities (hexdecimal)
$hex = name2hex_xml($xml); # "Give me ¥10,000"
# > cherie♠
=head1 DESCRIPTION
HTML::Entities::Numbered is a content conversion filter for named HTML
entities (symbols, mathmetical symbols, Greek letters, Latin letters,
etc.).
When an argument of C<name2decimal()> or C<name2hex()> contains some
B<nameable> HTML entities, they will be replaced to numbered HTML
entities. And when an argument of C<name2decimal_xml()> or
C<name2hex_xml()> contains some B<nameable> numbered HTML entities,
they will be replaced to numbered HTML entities B<except valid XML
entities> (the excepted "valid XML entities" are the following five
entities: C<<>, C<>>, C<&>, C<">, C<'>).
By the same token, when an argument of C<decimal2name()> or
C<hex2name()> contains some B<nameable> numbered HTML entities, they
will be replaced to named HTML entities.
(the exception "valid XML entities" means the following five entities:
C<<>, C<>>, C<&>, C<">, C<'>)
On version 0.03, the entities hash table is imported from
L<HTML::Entities> (with obsolete class
C<HTML::Entities::Numbered::Extra> for older releases of Perl).
At the moment, 0.04 (or later) is included
L<HTML::Entities::Numbered::Table> to import HTML entities table, and
thereby we do not need to have L<HTML::Entities> (included in
L<HTML::Parser> distribution).
This may be also useful for making valid XML (corrects the undefined
entity references, and enhanced by addition of functions conform to
the XML).
=head1 FUNCTIONS
Following all functions are exported by default.
=over 4
=item * name2decimal
Some included named HTML entities in argument of C<name2decimal()>
will be replaced to decimal numbered HTML entities.
=item * name2hex
Some included named HTML entities in argument of C<name2hex()>
will be replaced to hexadecimal numbered HTML entities.
=item * decimal2name
Some include decimal numbered HTML entities in argument of
C<decimal2name()> will be replaced to named HTML entities
(If they're nameable).
=item * hex2name
Some include hexadecimal numbered HTML entities in argument of
C<hex2name()> will be replaced to named HTML entities
(If they're nameable).
=item * name2decimal_xml
Some included named HTML entities in argument of C<name2decimal_xml()>
will be replaced to decimal numbered HTML entities B<except valid XML
entities>.
=item * name2hex_xml
Some included named HTML entities in argument of C<name2hex_xml()>
will be replaced to hexadecimal numbered HTML entities B<except valid
XML entities>.
=back
If you'd prefer not to import them functions into the caller's
namespace, you can call them as below:
use HTML::Entities::Numbered ();
$decimal = HTML::Entities::Numbered::name2decimal($str);
$hex = HTML::Entities::Numbered::name2hex($str);
$named1 = HTML::Entities::Numbered::decimal2name($str);
$named2 = HTML::Entities::Numbered::hex2name($str);
$decimal = HTML::Entities::Numbered::name2decimal_xml($str);
$hex = HTML::Entities::Numbered::name2hex_xml($str);
=head1 AUTHOR
Koichi Taniguchi E<lt>taniguchi@livedoor.jpE<gt>
Develop triggered by IKEBE Tomohiro E<lt>ikebe@cpan.orgE<gt>
Many thanks to Tatsuhiko Miyagawa E<lt>miyagawa@cpan.orgE<gt>
=head1 COPYRIGHT
Copyright (c) 2004 Koichi Taniguchi. Japan. All rights reserved.
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=head1 SEE ALSO
L<HTML::Entities>,
L<http://www.w3.org/TR/REC-html40/sgml/entities.html>
=cut
|