CSS-Flip
view release on metacpan or search on metacpan
lib/CSS/Janus/Consts.pm view on Meta::CPAN
#-*- perl -*-
#-*- coding: us-ascii -*-
use 5.005; # qr{} is required.
package CSS::Janus::Consts;
use strict;
#use warnings;
# To be compatible with Perl 5.5 or earlier
my @OUR_VARS;
BEGIN {
@OUR_VARS = qw($NON_ASCII $UNICODE $ESCAPE $NMSTART $URL_SPECIAL_CHARS
$NMCHAR $STRING1 $STRING2 $COMMENT $IDENT $NAME $NUM $STRING
$URL_CHARS $HASH $URI
$UNIT $QUANTITY $LOOKBEHIND_NOT_LETTER $LOOKAHEAD_NOT_OPEN_BRACE
$VALID_AFTER_URI_CHARS $LOOKAHEAD_NOT_CLOSING_PAREN
$LOOKAHEAD_FOR_CLOSING_PAREN $POSSIBLY_NEGATIVE_QUANTITY
$FOUR_NOTATION_QUANTITY_RE $COLOR $FOUR_NOTATION_COLOR_RE
$BORDER_RADIUS_RE $CURSOR_EAST_RE $CURSOR_WEST_RE
$BG_HORIZONTAL_PERCENTAGE_RE $BG_HORIZONTAL_PERCENTAGE_X_RE
$LENGTH_UNIT $LOOKAHEAD_END_OF_ZERO $LENGTH $ZERO_LENGTH
$BG_HORIZONTAL_LENGTH_RE $BG_HORIZONTAL_LENGTH_X_RE
$CHARS_WITHIN_SELECTOR $BODY_DIRECTION_LTR_RE $BODY_DIRECTION_RTL_RE
$LEFT_RE $RIGHT_RE $LEFT_IN_URL_RE $RIGHT_IN_URL_RE
$LTR_IN_URL_RE $RTL_IN_URL_RE
$COMMENT_RE $NOFLIP_SINGLE_RE $NOFLIP_CLASS_RE
$BORDER_RADIUS_TOKENIZER_RE);
}
use vars qw(@ISA @EXPORT $VERSION), @OUR_VARS;
use Exporter;
@ISA = qw(Exporter);
@EXPORT = @OUR_VARS;
$VERSION = '0.01';
## Constants
# These are part of grammer taken from http://www.w3.org/TR/CSS21/grammar.html
# nonascii [\240-\377]
# $NON_ASCII = '[\200-\377]';
# modified: handle characters beyond \377.
$NON_ASCII = "[^\\000-\\177]";
# unicode \\{h}{1,6}(\r\n|[ \t\r\n\f])?
$UNICODE = "(?:(?:\\\\[0-9a-f]{1,6})(?:\\r\\n|[ \\t\\r\\n\\f])?)";
# escape {unicode}|\\[^\r\n\f0-9a-f]
$ESCAPE = "(?:$UNICODE|\\\\[^\\r\\n\\f0-9a-f])";
# nmstart [_a-z]|{nonascii}|{escape}
$NMSTART = "(?:[_a-z]|$NON_ASCII|$ESCAPE)";
# nmchar [_a-z0-9-]|{nonascii}|{escape}
$NMCHAR = "(?:[_a-z0-9-]|$NON_ASCII|$ESCAPE)";
# string1 \"([^\n\r\f\\"]|\\{nl}|{escape})*\"
$STRING1 = "\"(?:[^\"\\\\]|\\.)*\"";
# string2 \'([^\n\r\f\\']|\\{nl}|{escape})*\'
$STRING2 = "\'(?:[^\'\\\\]|\\.)*\'";
# comment \/\*[^*]*\*+([^/*][^*]*\*+)*\/
$COMMENT = '/\*[^*]*\*+([^/*][^*]*\*+)*/';
# ident -?{nmstart}{nmchar}*
$IDENT = "-?$NMSTART$NMCHAR*";
# name {nmchar}+
$NAME = "$NMCHAR+";
# num [0-9]+|[0-9]*"."[0-9]+
$NUM = '(?:[0-9]*\.[0-9]+|[0-9]+)';
# string {string1}|{string2}
$STRING = "(?:$STRING1|$STRING2)";
# url ([!#$%&*-~]|{nonascii}|{escape})*
$URL_SPECIAL_CHARS = '[!#$%&*-~]';
$URL_CHARS = "(?:$URL_SPECIAL_CHARS|$NON_ASCII|$ESCAPE)*";
# "#"{name} {return HASH;}
$HASH = "#$NAME";
# "url("{w}{string}{w}")" {return URI;}
# "url("{w}{url}{w}")" {return URI;}
$URI = "url\\(\\s*(?:$STRING|$URL_CHARS)\\s*\\)";
# These are regexps particular to this package.
$UNIT = '(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)';
$QUANTITY = "$NUM(?:\\s*$UNIT|$IDENT)?";
$LOOKBEHIND_NOT_LETTER = '(?<![a-zA-Z])';
$LOOKAHEAD_NOT_OPEN_BRACE =
"(?!(?:$NMCHAR|~J~|\\s|#|\\:|\\.|\\,|\\+|>)*?\\{)";
$VALID_AFTER_URI_CHARS = '[\'\"]?\s*';
$LOOKAHEAD_NOT_CLOSING_PAREN = "(?!$URL_CHARS?$VALID_AFTER_URI_CHARS\\))";
$LOOKAHEAD_FOR_CLOSING_PAREN = "(?=$URL_CHARS?$VALID_AFTER_URI_CHARS\\))";
$POSSIBLY_NEGATIVE_QUANTITY = "((?:-?$QUANTITY)|(?:inherit|auto))";
$FOUR_NOTATION_QUANTITY_RE =
qr<$POSSIBLY_NEGATIVE_QUANTITY\s+$POSSIBLY_NEGATIVE_QUANTITY\s+$POSSIBLY_NEGATIVE_QUANTITY\s+$POSSIBLY_NEGATIVE_QUANTITY>i;
# $COLOR = "($NAME|$HASH);
# modified: added "rgb(...)".
my $COLOR_SCHEME = '(?:rgb|rgba|hsl|hsla)';
$COLOR = "($COLOR_SCHEME\\([^\)]+\\)|$NAME|$HASH)";
( run in 0.462 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )