CSS-DOM
view release on metacpan or search on metacpan
lib/CSS/DOM/Util.pm view on Meta::CPAN
use Exporter 5.57 'import';
our @EXPORT_OK = qw '
unescape escape
escape_ident
unescape_url
unescape_str escape_str';
our %EXPORT_TAGS = (all=>\@EXPORT_OK);
sub escape($$) {
my $str = shift;
my $hex_or_space = qr/[0-9a-fA-F]|(?!$_[0])[ \t]/;
$str =~ s/([\n\r\f]|$_[0])/
my $c = $1;
$c =~ m'[ -\/:-@[-`{-~]'
? "\\$c"
: sprintf '\%x' . ' ' x (
ord $c < 0x100000 &&
(substr $str, $+[0], 1,||'a') =~ $hex_or_space
), ord $c
/ge;
$str;
}
sub unescape($) {
my $val = shift;
$val =~ s/\\(?:
([a-fA-F0-9]{1,6})(?:\r\n|[ \n\r\t\f])?
|
([^\n\r\f0-9a-f])
|
(\r\n?|[\n\f])
)/
defined $1 ? chr hex $1 :
defined $2 ? $2 :
''
/gex;
$val;
}
sub escape_ident($) {
my $str = shift;
# An identifier canât have [0-9] for the first character, or for
# the second if
# the first is [-].
return escape $str,
qr/([\0-,.\/:-\@[-^`{-\177]|^[0-9]|(?<=^-)[0-9])/;
}
sub unescape_url($) {
my $token = shift;
$token =~ s/^url\([ \t\r\n\f]*//;
$token =~ s/[ \t\r\n\f]*\)\z//;
$token =~ s/^['"]// and chop $token;
return unescape $token
}
sub escape_str($) {
"'" . escape($_[0],qr/'/) . "'"
}
sub unescape_str($) {
unescape substr $_[0], 1, -1;
}
**__END__**
=head1 NAME
CSS::DOM::Util - Utility functions for dealing with CSS tokens
=head1 VERSION
( run in 0.242 second using v1.01-cache-2.11-cpan-65fba6d93b7 )