1 |
|
2 | /**
|
3 | * Object of regular expressions for style strings
|
4 | *
|
5 | * @alias style.re
|
6 | * @type {object}
|
7 | * @property {string} colorize - regular expression for colorize section
|
8 | * @property {string} colorhex - regular expression for color hex values with 3 or 6 characters
|
9 | * @property {string} colorname - regular expression for css color name
|
10 | * @property {string} padding - regular expression for padding section
|
11 | * @property {string} zoom - regular expression for zoom section
|
12 | * @property {string} classbase - regular expression for class name definition
|
13 | * @property {string} id - regular expression for id definition
|
14 | * @property {string} colorbase - regular expression for color hex or color name
|
15 | * @property {string} color - regular expression for single color entry
|
16 | * @property {string} colors - regular expression for double color entry
|
17 | * @property {string} background - regular expression for background section
|
18 | * @property {string} detail - regular expression for color details for line and optional fill
|
19 | * @property {string} detailsym - regular expression for color details for individual symbols
|
20 | * @property {string} classes - regular expression for one or more class names
|
21 | * @property {string} full - full regular expression for style string
|
22 | */
|
23 | let re = {
|
24 | 'colorize': 'C',
|
25 | 'colorhex': '(?:[0-9a-fA-F]{3}){1,2}',
|
26 | 'colorname': '[a-zA-Z]+',
|
27 | 'padding': 'P[0-9]{2}',
|
28 | 'zoom': 'Z(?:[0-9]+(?:\\.[0-9]+)?|x)',
|
29 | 'classbase': '-?[_a-zA-Z][_a-zA-Z0-9-]{0,100}',
|
30 | 'id': '[a-zA-Z][_a-zA-Z0-9-]{0,100}',
|
31 | }
|
32 |
|
33 | re.colorbase = `(?:${re.colorhex}|${re.colorname})`;
|
34 | re.color = `_${re.colorbase}_`;
|
35 | re.colors = `_${re.colorbase}(?:,${re.colorbase})?_`;
|
36 | re.background = `G${re.color}`;
|
37 | re.detail = `D${re.colors}`;
|
38 | re.detailsym = `D[0-9]{2}${re.colors}`;
|
39 | re.classes = `${re.classbase}(?: ${re.classbase})*`;
|
40 | re.full = `-(${re.colorize})?(${re.padding})?(${re.background})?(${re.detail})?(${re.zoom})?(?:-((?:${re.detailsym})*))?(?:-(${re.classes})?!(?:(${re.id})!)?)?`;
|
41 |
|
42 | export { re }
|