our $VERSION = '0.001';
-our @EXPORT_OK = qw(html_unescape xml_escape);
+our @EXPORT_OK = qw(html_escape html_unescape);
# To generate a new HTML entity table run this command
# perl examples/entities.pl
$ENTITIES{$1} = defined $3 ? (chr(hex $2) . chr(hex $3)) : chr(hex $2);
}
-# Characters that should be escaped in XML
-my %XML = (
+# Characters that should be escaped in HTML/XML
+my %ESCAPE = (
'&' => '&',
'<' => '<',
'>' => '>',
'\'' => '''
);
-sub html_unescape {
+sub html_escape {
my $str = shift;
- $str =~ s/&(?:\#((?:\d{1,7}|x[0-9a-fA-F]{1,6}));|(\w+;))/_decode($1, $2)/ge;
+ $str =~ s/([&<>"'])/$ESCAPE{$1}/ge;
return $str;
}
-sub xml_escape {
+sub html_unescape {
my $str = shift;
- $str =~ s/([&<>"'])/$XML{$1}/ge;
+ $str =~ s/&(?:\#((?:\d{1,7}|x[0-9a-fA-F]{1,6}));|(\w+;))/_decode($1, $2)/ge;
return $str;
}
=head1 SYNOPSIS
- use DOM::Tiny::Entities qw(html_unescape xml_escape);
+ use DOM::Tiny::Entities qw(html_escape html_unescape);
my $str = 'foo & bar';
+ $str = html_escape $str; # "foo & bar"
$str = html_unescape $str; # "foo & bar"
- $str = xml_escape $str; # "foo & bar"
=head1 DESCRIPTION
=head1 FUNCTIONS
+=head2 html_escape
+
+ my $escaped = html_escape $str;
+
+Escape unsafe characters C<&>, C<< < >>, C<< > >>, C<">, and C<'> in string.
+
+ html_escape '<div>'; # "<div>"
+
=head2 html_unescape
my $str = html_unescape $escaped;
html_unescape '<div> # "<div>"
-=head2 xml_escape
-
- my $escaped = xml_escape $str;
-
-Escape unsafe characters C<&>, C<< < >>, C<< > >>, C<">, and C<'> in string.
-
- xml_escape '<div>'; # "<div>"
-
=head1 BUGS
Report any issues on the public bugtracker.
use strict;
use warnings;
-use DOM::Tiny::Entities qw(html_unescape xml_escape);
+use DOM::Tiny::Entities qw(html_escape html_unescape);
use Scalar::Util 'weaken';
use Class::Tiny::Chained 'xml', { tree => sub { ['root'] } };
# Text (escaped)
my $type = $tree->[0];
- return xml_escape($tree->[1]) if $type eq 'text';
+ return html_escape($tree->[1]) if $type eq 'text';
# Raw text
return $tree->[1] if $type eq 'raw';
for my $key (sort keys %{$tree->[2]}) {
my $value = $tree->[2]{$key};
$result .= $xml ? qq{ $key="$key"} : " $key" and next unless defined $value;
- $result .= qq{ $key="} . xml_escape($value) . '"';
+ $result .= qq{ $key="} . html_escape($value) . '"';
}
# No children
use warnings;
use utf8;
use Test::More;
-use DOM::Tiny::Entities qw(html_unescape xml_escape);
+use DOM::Tiny::Entities qw(html_escape html_unescape);
use Encode 'decode';
# html_unescape
is html_unescape(decode 'UTF-8', 'foo<baz>&"Œ&Foo;'),
"foo<baz>&\"\x{152}&Foo;", 'right HTML unescaped result';
-# xml_escape
-is xml_escape(qq{la<f>\nbar"baz"'yada\n'<la}),
+# html_escape
+is html_escape(qq{la<f>\nbar"baz"'yada\n'<la}),
"la<f>\nbar"baz"'yada\n'&lt;la",
- 'right XML escaped result';
+ 'right HTML escaped result';
-# xml_escape (UTF-8 with nothing to escape)
-is xml_escape('привет'), 'привет', 'right XML escaped result';
+# html_escape (UTF-8 with nothing to escape)
+is html_escape('привет'), 'привет', 'right HTML escaped result';
-# xml_escape (UTF-8)
-is xml_escape('привет<foo>'), 'привет<foo>',
- 'right XML escaped result';
+# html_escape (UTF-8)
+is html_escape('привет<foo>'), 'привет<foo>',
+ 'right HTML escaped result';
done_testing;