|
@@ -115,30 +115,20 @@ class CssProp {
|
|
|
hex: `\\#(0x)?[0-9a-f]+`,
|
|
|
name: `aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|transparent|violet|wheat|white|whitesmoke|yellow|yellowgreen`,
|
|
|
rgb: String.raw`rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)`,
|
|
|
- rgba: String.raw`rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(${
|
|
|
- CssProp.N.integer_zero_ff
|
|
|
- }|${CssProp.N.number_zero_one}|${CssProp.B.percentage_zero_hundred})\s*\)`
|
|
|
+ rgba: String.raw`rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(${CssProp.N.integer_zero_ff}|${CssProp.N.number_zero_one}|${CssProp.B.percentage_zero_hundred})\s*\)`
|
|
|
};
|
|
|
|
|
|
/*
|
|
|
* Compound (i.e. dependant on other (sub) regular expresions) sub RegEx segments
|
|
|
*/
|
|
|
private static readonly _C = {
|
|
|
- alpha: `${CssProp.N.integer_zero_ff}|${CssProp.N.number_zero_one}|${
|
|
|
- CssProp.B.percentage_zero_hundred
|
|
|
- }`,
|
|
|
+ alpha: `${CssProp.N.integer_zero_ff}|${CssProp.N.number_zero_one}|${CssProp.B.percentage_zero_hundred}`,
|
|
|
alphavalue: CssProp.N.number_zero_one,
|
|
|
- bg_position: `((${
|
|
|
- CssProp.B.len_or_perc
|
|
|
- }|left|center|right|top|bottom)\\s*){1,4}`,
|
|
|
- bg_size: `(${CssProp.B.length_pos}|${
|
|
|
- CssProp.B.percentage
|
|
|
- }|auto){1,2}|cover|contain`,
|
|
|
+ bg_position: `((${CssProp.B.len_or_perc}|left|center|right|top|bottom)\\s*){1,4}`,
|
|
|
+ bg_size: `(${CssProp.B.length_pos}|${CssProp.B.percentage}|auto){1,2}|cover|contain`,
|
|
|
border_width: `thin|medium|thick|${CssProp.B.length}`,
|
|
|
bottom: `${CssProp.B.length}|auto`,
|
|
|
- color: `${CssProp._COLOR.hex}|${CssProp._COLOR.rgb}|${
|
|
|
- CssProp._COLOR.rgba
|
|
|
- }|${CssProp._COLOR.name}`,
|
|
|
+ color: `${CssProp._COLOR.hex}|${CssProp._COLOR.rgb}|${CssProp._COLOR.rgba}|${CssProp._COLOR.name}`,
|
|
|
family_name: `${CssProp.B.string}|(${CssProp.B.ident}\\s*)+`,
|
|
|
image_decl: CssProp.B.url,
|
|
|
left: `${CssProp.B.length}|auto`,
|
|
@@ -146,34 +136,22 @@ class CssProp {
|
|
|
margin_width: `${CssProp.B.len_or_perc}|auto`,
|
|
|
padding_width: `${CssProp.B.length_pos}|${CssProp.B.percentage_pos}`,
|
|
|
page_url: CssProp.B.url,
|
|
|
- position: `((${
|
|
|
- CssProp.B.len_or_perc
|
|
|
- }|left|center|right|top|bottom)\\s*){1,4}`,
|
|
|
+ position: `((${CssProp.B.len_or_perc}|left|center|right|top|bottom)\\s*){1,4}`,
|
|
|
right: `${CssProp.B.length}|auto`,
|
|
|
shadow: '',
|
|
|
- size: `closest-side|farthest-side|closest-corner|farthest-corner|${
|
|
|
- CssProp.B.length
|
|
|
- }|(${CssProp.B.len_or_perc})\\s+(${CssProp.B.len_or_perc})`,
|
|
|
+ size: `closest-side|farthest-side|closest-corner|farthest-corner|${CssProp.B.length}|(${CssProp.B.len_or_perc})\\s+(${CssProp.B.len_or_perc})`,
|
|
|
top: `${CssProp.B.length}|auto`
|
|
|
};
|
|
|
|
|
|
private static readonly _C1 = {
|
|
|
- image_list: `image\\(\\s*(${CssProp.B.url})*\\s*(${CssProp.B.url}|${
|
|
|
- CssProp._C.color
|
|
|
- })\\s*\\)`,
|
|
|
- shadow: `((${CssProp._C.color})\\s+((${
|
|
|
- CssProp.B.length
|
|
|
- })\\s*){2,4}(\s+inset)?)|((inset\\s+)?((${
|
|
|
- CssProp.B.length
|
|
|
- })\\s*){2,4}\\s*(${CssProp._C.color})?)`
|
|
|
+ image_list: `image\\(\\s*(${CssProp.B.url})*\\s*(${CssProp.B.url}|${CssProp._C.color})\\s*\\)`,
|
|
|
+ shadow: `((${CssProp._C.color})\\s+((${CssProp.B.length})\\s*){2,4}(\s+inset)?)|((inset\\s+)?((${CssProp.B.length})\\s*){2,4}\\s*(${CssProp._C.color})?)`
|
|
|
};
|
|
|
|
|
|
private static readonly _C2 = {
|
|
|
bg_image: `(${CssProp.B.url}|${CssProp._C1.image_list})|none`,
|
|
|
image: `${CssProp.B.url}|${CssProp._C1.image_list}`,
|
|
|
- shape: `rect\\(\\s*(${CssProp._C.top})\\s*,\\s*(${
|
|
|
- CssProp._C.right
|
|
|
- })\\s*,\\s*(${CssProp._C.bottom})\\s*,\\s*(${CssProp._C.left})\\s*\\)`
|
|
|
+ shape: `rect\\(\\s*(${CssProp._C.top})\\s*,\\s*(${CssProp._C.right})\\s*,\\s*(${CssProp._C.bottom})\\s*,\\s*(${CssProp._C.left})\\s*\\)`
|
|
|
};
|
|
|
|
|
|
private static readonly C = { ...CssProp._C, ...CssProp._C1, ...CssProp._C2 };
|
|
@@ -223,36 +201,22 @@ class CssProp {
|
|
|
* Compound propertiy value regular expressions (i.e. dependant on other sub expressions)
|
|
|
*/
|
|
|
private static readonly _CP = {
|
|
|
- background_attachment: `${CssProp.A.attachment}(,\\s*${
|
|
|
- CssProp.A.attachment
|
|
|
- })*`,
|
|
|
+ background_attachment: `${CssProp.A.attachment}(,\\s*${CssProp.A.attachment})*`,
|
|
|
background_color: CssProp.C.color,
|
|
|
background_origin: `${CssProp.A.box}(,\\s*${CssProp.A.box})*`,
|
|
|
- background_repeat: `${CssProp.A.repeat_style}(,\\s*${
|
|
|
- CssProp.A.repeat_style
|
|
|
- })*`,
|
|
|
- border: `((${CssProp.C.border_width}|${CssProp.A.border_style}|${
|
|
|
- CssProp.C.color
|
|
|
- })\\s*){1,3}`,
|
|
|
- border_radius: `((${CssProp.B.len_or_perc})\\s*){1,4}(\\/\\s*((${
|
|
|
- CssProp.B.len_or_perc
|
|
|
- })\\s*){1,4})?`,
|
|
|
+ background_repeat: `${CssProp.A.repeat_style}(,\\s*${CssProp.A.repeat_style})*`,
|
|
|
+ border: `((${CssProp.C.border_width}|${CssProp.A.border_style}|${CssProp.C.color})\\s*){1,3}`,
|
|
|
+ border_radius: `((${CssProp.B.len_or_perc})\\s*){1,4}(\\/\\s*((${CssProp.B.len_or_perc})\\s*){1,4})?`,
|
|
|
border_spacing: `${CssProp.B.length}\\s*(${CssProp.B.length})?`,
|
|
|
border_top_color: CssProp.C.color,
|
|
|
border_top_style: CssProp.A.border_style,
|
|
|
border_width: `((${CssProp.C.border_width})\\s*){1,4}`,
|
|
|
color: CssProp.C.color,
|
|
|
- cursor: `(${
|
|
|
- CssProp.B.url
|
|
|
- }(\\s*,\\s*)?)*(auto|crosshair|default|pointer|move|e-resize|ne-resize|nw-resize|n-resize|se-resize|sw-resize|s-resize|w-resize|text|wait|help|progress|all-scroll|col-resize|hand|no-drop|not-allowed|row-resize|vertical-text)`,
|
|
|
- display: `inline|block|list-item|run-in|inline-list-item|inline-block|table|inline-table|table-cell|table-caption|flex|inline-flex|grid|inline-grid|${
|
|
|
- CssProp.A.display_inside
|
|
|
- }|${CssProp.A.display_outside}|inherit|inline-box|inline-stack`,
|
|
|
+ cursor: `(${CssProp.B.url}(\\s*,\\s*)?)*(auto|crosshair|default|pointer|move|e-resize|ne-resize|nw-resize|n-resize|se-resize|sw-resize|s-resize|w-resize|text|wait|help|progress|all-scroll|col-resize|hand|no-drop|not-allowed|row-resize|vertical-text)`,
|
|
|
+ display: `inline|block|list-item|run-in|inline-list-item|inline-block|table|inline-table|table-cell|table-caption|flex|inline-flex|grid|inline-grid|${CssProp.A.display_inside}|${CssProp.A.display_outside}|inherit|inline-box|inline-stack`,
|
|
|
display_outside: CssProp.A.display_outside,
|
|
|
elevation: `${CssProp.B.angle}|below|level|above|higher|lower`,
|
|
|
- font_family: `(${CssProp.C.family_name}|${
|
|
|
- CssProp.A.generic_family
|
|
|
- })(,\\s*(${CssProp.C.family_name}|${CssProp.A.generic_family}))*`,
|
|
|
+ font_family: `(${CssProp.C.family_name}|${CssProp.A.generic_family})(,\\s*(${CssProp.C.family_name}|${CssProp.A.generic_family}))*`,
|
|
|
height: `${CssProp.B.length}|${CssProp.B.percentage}|auto`,
|
|
|
letter_spacing: `normal|${CssProp.B.length}`,
|
|
|
list_style_image: `${CssProp.C.image}|none`,
|
|
@@ -269,35 +233,25 @@ class CssProp {
|
|
|
stress: CssProp.N.number,
|
|
|
text_indent: `${CssProp.B.length}|${CssProp.B.percentage}`,
|
|
|
text_shadow: `none|${CssProp.C.shadow}(,\\s*(${CssProp.C.shadow}))*`,
|
|
|
- volume: `${CssProp.N.number_pos}|${
|
|
|
- CssProp.B.percentage_pos
|
|
|
- }|silent|x-soft|soft|medium|loud|x-loud`,
|
|
|
+ volume: `${CssProp.N.number_pos}|${CssProp.B.percentage_pos}|silent|x-soft|soft|medium|loud|x-loud`,
|
|
|
word_wrap: CssProp.AP.overflow_wrap,
|
|
|
zoom: `normal|${CssProp.N.number_pos}|${CssProp.B.percentage_pos}`,
|
|
|
backface_visibility: CssProp.AP.visibility,
|
|
|
background_clip: `${CssProp.A.box}(,\\s*(${CssProp.A.box}))*`,
|
|
|
- background_position: `${CssProp.C.bg_position}(,\\s*(${
|
|
|
- CssProp.C.bg_position
|
|
|
- }))*`,
|
|
|
+ background_position: `${CssProp.C.bg_position}(,\\s*(${CssProp.C.bg_position}))*`,
|
|
|
border_bottom_color: CssProp.C.color,
|
|
|
border_bottom_style: CssProp.A.border_style,
|
|
|
border_color: `((${CssProp.C.color})\\s*){1,4}`,
|
|
|
border_left_color: CssProp.C.color,
|
|
|
border_right_color: CssProp.C.color,
|
|
|
border_style: `((${CssProp.A.border_style})\\s*){1,4}`,
|
|
|
- border_top_left_radius: `(${CssProp.B.length}|${
|
|
|
- CssProp.B.percentage
|
|
|
- })(\\s*(${CssProp.B.length}|${CssProp.B.percentage}))?`,
|
|
|
+ border_top_left_radius: `(${CssProp.B.length}|${CssProp.B.percentage})(\\s*(${CssProp.B.length}|${CssProp.B.percentage}))?`,
|
|
|
border_top_width: CssProp.C.border_width,
|
|
|
box_shadow: `none|${CssProp.C.shadow}(,\\s*(${CssProp.C.shadow}))*`,
|
|
|
clip: `${CssProp.C.shape}|auto`,
|
|
|
display_inside: CssProp.A.display_inside,
|
|
|
- font_size: `${CssProp.A.absolute_size}|${CssProp.A.relative_size}|${
|
|
|
- CssProp.B.length_pos
|
|
|
- }|${CssProp.B.percentage_pos}`,
|
|
|
- line_height: `normal|${CssProp.N.number_pos}|${CssProp.B.length_pos}|${
|
|
|
- CssProp.B.percentage_pos
|
|
|
- }`,
|
|
|
+ font_size: `${CssProp.A.absolute_size}|${CssProp.A.relative_size}|${CssProp.B.length_pos}|${CssProp.B.percentage_pos}`,
|
|
|
+ line_height: `normal|${CssProp.N.number_pos}|${CssProp.B.length_pos}|${CssProp.B.percentage_pos}`,
|
|
|
margin_left: CssProp.C.margin_width,
|
|
|
max_width: `${CssProp.B.length_pos}|${CssProp.B.percentage_pos}|none|auto`,
|
|
|
outline_style: CssProp.A.border_style,
|
|
@@ -310,74 +264,42 @@ class CssProp {
|
|
|
width: `${CssProp.B.length_pos}|${CssProp.B.percentage_pos}|auto`,
|
|
|
z_index: `auto|${CssProp.B.z_index}`,
|
|
|
// Simplified background
|
|
|
- background: `(((${CssProp.C.bg_position}\\s*(\\/\\s*${
|
|
|
- CssProp.C.bg_size
|
|
|
- })?)|(${CssProp.A.repeat_style})|(${CssProp.A.attachment})|(${
|
|
|
- CssProp.A.bg_origin
|
|
|
- })|(${CssProp.C.bg_image})|(${CssProp.C.color}))\\s*)+`,
|
|
|
+ background: `(((${CssProp.C.bg_position}\\s*(\\/\\s*${CssProp.C.bg_size})?)|(${CssProp.A.repeat_style})|(${CssProp.A.attachment})|(${CssProp.A.bg_origin})|(${CssProp.C.bg_image})|(${CssProp.C.color}))\\s*)+`,
|
|
|
background_size: `${CssProp.C.bg_size}(,\\s*${CssProp.C.bg_size})*`,
|
|
|
- border_bottom_left_radius: `(${CssProp.B.length}|${
|
|
|
- CssProp.B.percentage
|
|
|
- })(\\s*(${CssProp.B.length}|${CssProp.B.percentage}))?`,
|
|
|
+ border_bottom_left_radius: `(${CssProp.B.length}|${CssProp.B.percentage})(\\s*(${CssProp.B.length}|${CssProp.B.percentage}))?`,
|
|
|
border_bottom_width: CssProp.C.border_width,
|
|
|
border_left_style: CssProp.A.border_style,
|
|
|
border_right_style: CssProp.A.border_style,
|
|
|
- border_top: `((${CssProp.C.border_width}|${CssProp.A.border_style}|${
|
|
|
- CssProp.C.color
|
|
|
- })\\s*){1,3}`,
|
|
|
+ border_top: `((${CssProp.C.border_width}|${CssProp.A.border_style}|${CssProp.C.color})\\s*){1,3}`,
|
|
|
bottom: `${CssProp.B.len_or_perc}|auto`,
|
|
|
- list_style: `((${CssProp.AP.list_style_type}|${
|
|
|
- CssProp.AP.list_style_position
|
|
|
- }|${CssProp.C.image}|none})\\s*){1,3}`,
|
|
|
+ list_style: `((${CssProp.AP.list_style_type}|${CssProp.AP.list_style_position}|${CssProp.C.image}|none})\\s*){1,3}`,
|
|
|
margin_top: CssProp.C.margin_width,
|
|
|
- outline: `((${CssProp.C.color}|invert|${CssProp.A.border_style}|${
|
|
|
- CssProp.C.border_width
|
|
|
- })\\s*){1,3}`,
|
|
|
+ outline: `((${CssProp.C.color}|invert|${CssProp.A.border_style}|${CssProp.C.border_width})\\s*){1,3}`,
|
|
|
overflow_y: CssProp.AP.overflow_x,
|
|
|
pitch: `${CssProp.B.frequency}|x-low|low|medium|high|x-high`,
|
|
|
- vertical_align: `baseline|sub|super|top|text-top|middle|bottom|text-bottom|${
|
|
|
- CssProp.B.len_or_perc
|
|
|
- }`,
|
|
|
+ vertical_align: `baseline|sub|super|top|text-top|middle|bottom|text-bottom|${CssProp.B.len_or_perc}`,
|
|
|
word_spacing: `normal|${CssProp.B.length}`,
|
|
|
background_image: `${CssProp.C.bg_image}(,\\s*${CssProp.C.bg_image})*`,
|
|
|
- border_bottom_right_radius: `(${CssProp.B.length}|${
|
|
|
- CssProp.B.percentage
|
|
|
- })(\\s*(${CssProp.B.length}|${CssProp.B.percentage}))?`,
|
|
|
+ border_bottom_right_radius: `(${CssProp.B.length}|${CssProp.B.percentage})(\\s*(${CssProp.B.length}|${CssProp.B.percentage}))?`,
|
|
|
border_left_width: CssProp.C.border_width,
|
|
|
border_right_width: CssProp.C.border_width,
|
|
|
left: `${CssProp.B.len_or_perc}|auto`,
|
|
|
margin_bottom: CssProp.C.margin_width,
|
|
|
pause_after: `${CssProp.B.time}|${CssProp.B.percentage}`,
|
|
|
- speech_rate: `${
|
|
|
- CssProp.N.number
|
|
|
- }|x-slow|slow|medium|fast|x-fast|faster|slower`,
|
|
|
+ speech_rate: `${CssProp.N.number}|x-slow|slow|medium|fast|x-fast|faster|slower`,
|
|
|
transition_duration: `${CssProp.B.time}(,\\s*${CssProp.B.time})*`,
|
|
|
- border_bottom: `((${CssProp.C.border_width}|${CssProp.A.border_style}|${
|
|
|
- CssProp.C.color
|
|
|
- })\\s*){1,3}`,
|
|
|
- border_right: `((${CssProp.C.border_width}|${CssProp.A.border_style}|${
|
|
|
- CssProp.C.color
|
|
|
- })\\s*){1,3}`,
|
|
|
+ border_bottom: `((${CssProp.C.border_width}|${CssProp.A.border_style}|${CssProp.C.color})\\s*){1,3}`,
|
|
|
+ border_right: `((${CssProp.C.border_width}|${CssProp.A.border_style}|${CssProp.C.color})\\s*){1,3}`,
|
|
|
margin: `((${CssProp.C.margin_width})\\s*){1,4}`,
|
|
|
padding_left: CssProp.C.padding_width,
|
|
|
- border_left: `((${CssProp.C.border_width}|${CssProp.A.border_style}|${
|
|
|
- CssProp.C.color
|
|
|
- })\\s*){1,3}`,
|
|
|
+ border_left: `((${CssProp.C.border_width}|${CssProp.A.border_style}|${CssProp.C.color})\\s*){1,3}`,
|
|
|
quotes: `(${CssProp.B.string}\\s*${CssProp.B.string})+|none`,
|
|
|
- border_top_right_radius: `(${CssProp.B.length}|${
|
|
|
- CssProp.B.percentage
|
|
|
- })(\\s*(${CssProp.B.length}|${CssProp.B.percentage}))?`,
|
|
|
+ border_top_right_radius: `(${CssProp.B.length}|${CssProp.B.percentage})(\\s*(${CssProp.B.length}|${CssProp.B.percentage}))?`,
|
|
|
min_width: `${CssProp.B.length_pos}|${CssProp.B.percentage_pos}|auto`
|
|
|
};
|
|
|
|
|
|
private static readonly _CP1 = {
|
|
|
- font: `(((((${CssProp.AP.font_style}|${CssProp.AP.font_variant}|${
|
|
|
- CssProp.AP.font_weight
|
|
|
- })\\s*){1,3})?\\s*(${CssProp._CP.font_size})\\s*(\\/\\s*(${
|
|
|
- CssProp._CP.line_height
|
|
|
- }))?\\s+(${
|
|
|
- CssProp._CP.font_family
|
|
|
- }))|caption|icon|menu|message-box|small-caption|status-bar)`
|
|
|
+ font: `(((((${CssProp.AP.font_style}|${CssProp.AP.font_variant}|${CssProp.AP.font_weight})\\s*){1,3})?\\s*(${CssProp._CP.font_size})\\s*(\\/\\s*(${CssProp._CP.line_height}))?\\s+(${CssProp._CP.font_family}))|caption|icon|menu|message-box|small-caption|status-bar)`
|
|
|
};
|
|
|
|
|
|
private static readonly CP = { ...CssProp._CP, ...CssProp._CP1 };
|