33namespace hexydec \css ;
44use \hexydec \tokens \tokenise ;
55
6- class cssdoc implements \ArrayAccess, \Iterator {
6+ class cssdoc extends config implements \ArrayAccess, \Iterator {
77
88 /**
99 * @var array<string> $tokens Regexp components keyed by their corresponding codename for tokenising CSS
@@ -29,175 +29,6 @@ class cssdoc implements \ArrayAccess, \Iterator {
2929 'string ' => '(?:[^ \\/ \\[ \\]{} \\( \\):;, \\*>+~ \\^$!" \' \\n \\r \\t]++| \\\\.) ' ,
3030 ];
3131
32- /**
33- * @var array<array> $config Object configuration array
34- */
35- protected array $ config = [
36- 'nested ' => ['@media ' , '@supports ' , '@keyframes ' , '@-webkit-keyframes ' , '@-moz-keyframes ' , '@-o-keyframes ' , '@document ' , '@-moz-document ' , '@container ' ], // directive that can have nested rules
37- 'spaced ' => ['calc ' , 'min ' , 'max ' , 'clamp ' ], // values where spaces between operators must be retained
38- 'quoted ' => ['content ' , 'format ' , 'counters ' , '@charset ' , 'syntax ' , 'font-feature-settings ' , '-webkit-font-feature-settings ' , '-moz-font-feature-settings ' , 'quotes ' , 'text-overflow ' ], // directives or properties where the contained values must be quoted
39- 'casesensitive ' => ['url ' ], // property values that should not be lowercased
40- 'none ' => ['border ' , 'background ' , 'outline ' ], // properties that can be changed to 0 when none
41- 'multiples ' => ['margin ' , 'padding ' , 'border-width ' , 'border-style ' , 'border-color ' , 'border-radius ' ],
42- 'colors ' => [
43- '#f0ffff ' => 'azure ' ,
44- '#f5f5dc ' => 'beige ' ,
45- '#ffe4c4 ' => 'bisque ' ,
46- '#a52a2a ' => 'brown ' ,
47- '#ff7f50 ' => 'coral ' ,
48- '#ffd700 ' => 'gold ' ,
49- '#008000 ' => 'green ' ,
50- '#808080 ' => 'grey ' ,
51- '#4b0082 ' => 'indigo ' ,
52- '#fffff0 ' => 'ivory ' ,
53- '#f0e68c ' => 'khaki ' ,
54- '#faf0e6 ' => 'linen ' ,
55- '#000080 ' => 'navy ' ,
56- '#808000 ' => 'olive ' ,
57- '#ffa500 ' => 'orange ' ,
58- '#da70d6 ' => 'orchid ' ,
59- '#cd853f ' => 'peru ' ,
60- '#ffc0cb ' => 'pink ' ,
61- '#dda0dd ' => 'plum ' ,
62- '#f00 ' => 'red ' ,
63- '#fa8072 ' => 'salmon ' ,
64- '#a0522d ' => 'sienna ' ,
65- '#c0c0c0 ' => 'silver ' ,
66- '#fffafa ' => 'snow ' ,
67- '#d2b48c ' => 'tan ' ,
68- '#008080 ' => 'teal ' ,
69- '#ff6347 ' => 'tomato ' ,
70- '#ee82ee ' => 'violet ' ,
71- '#f5deb3 ' => 'wheat ' ,
72- 'black ' => '#000 ' ,
73- 'indianred ' => '#cd5c5c ' ,
74- 'lightcoral ' => '#f08080 ' ,
75- 'darksalmon ' => '#e9967a ' ,
76- 'lightsalmon ' => '#ffa07a ' ,
77- 'crimson ' => '#dc143c ' ,
78- 'firebrick ' => '#b22222 ' ,
79- 'darkred ' => '#8b0000 ' ,
80- 'lightpink ' => '#ffb6c1 ' ,
81- 'hotpink ' => '#ff69b4 ' ,
82- 'deeppink ' => '#ff1493 ' ,
83- 'mediumvioletred ' => '#c71585 ' ,
84- 'palevioletred ' => '#db7093 ' ,
85- 'orangered ' => '#ff4500 ' ,
86- 'darkorange ' => '#ff8c00 ' ,
87- 'lightyellow ' => '#ffffe0 ' ,
88- 'lemonchiffon ' => '#fffacd ' ,
89- 'lightgoldenrodyellow ' => '#fafad2 ' ,
90- 'papayawhip ' => '#ffefd5 ' ,
91- 'moccasin ' => '#ffe4b5 ' ,
92- 'peachpuff ' => '#ffdab9 ' ,
93- 'palegoldenrod ' => '#eee8aa ' ,
94- 'darkkhaki ' => '#bdb76b ' ,
95- 'lavender ' => '#e6e6fa ' ,
96- 'thistle ' => '#d8bfd8 ' ,
97- 'fuchsia ' => '#ff00ff ' ,
98- 'magenta ' => '#ff00ff ' ,
99- 'mediumorchid ' => '#ba55d3 ' ,
100- 'mediumpurple ' => '#9370db ' ,
101- 'rebeccapurple ' => '#663399 ' ,
102- 'blueviolet ' => '#8a2be2 ' ,
103- 'darkviolet ' => '#9400d3 ' ,
104- 'darkorchid ' => '#9932cc ' ,
105- 'darkmagenta ' => '#8b008b ' ,
106- 'slateblue ' => '#6a5acd ' ,
107- 'darkslateblue ' => '#483d8b ' ,
108- 'mediumslateblue ' => '#7b68ee ' ,
109- 'greenyellow ' => '#adff2f ' ,
110- 'chartreuse ' => '#7fff00 ' ,
111- 'lawngreen ' => '#7cfc00 ' ,
112- 'limegreen ' => '#32cd32 ' ,
113- 'palegreen ' => '#98fb98 ' ,
114- 'lightgreen ' => '#90ee90 ' ,
115- 'mediumspringgreen ' => '#00fa9a ' ,
116- 'springgreen ' => '#00ff7f ' ,
117- 'mediumseagreen ' => '#3cb371 ' ,
118- 'seagreen ' => '#2e8b57 ' ,
119- 'forestgreen ' => '#228b22 ' ,
120- 'darkgreen ' => '#006400 ' ,
121- 'yellowgreen ' => '#9acd32 ' ,
122- 'olivedrab ' => '#6b8e23 ' ,
123- 'darkolivegreen ' => '#556b2f ' ,
124- 'mediumaquamarine ' => '#66cdaa ' ,
125- 'darkseagreen ' => '#8fbc8b ' ,
126- 'lightseagreen ' => '#20b2aa ' ,
127- 'darkcyan ' => '#008b8b ' ,
128- 'lightcyan ' => '#e0ffff ' ,
129- 'paleturquoise ' => '#afeeee ' ,
130- 'aquamarine ' => '#7fffd4 ' ,
131- 'turquoise ' => '#40e0d0 ' ,
132- 'mediumturquoise ' => '#48d1cc ' ,
133- 'darkturquoise ' => '#00ced1 ' ,
134- 'cadetblue ' => '#5f9ea0 ' ,
135- 'steelblue ' => '#4682b4 ' ,
136- 'lightsteelblue ' => '#b0c4de ' ,
137- 'powderblue ' => '#b0e0e6 ' ,
138- 'lightblue ' => '#add8e6 ' ,
139- 'skyblue ' => '#87ceeb ' ,
140- 'lightskyblue ' => '#87cefa ' ,
141- 'deepskyblue ' => '#00bfff ' ,
142- 'dodgerblue ' => '#1e90ff ' ,
143- 'cornflowerblue ' => '#6495ed ' ,
144- 'royalblue ' => '#4169e1 ' ,
145- 'mediumblue ' => '#0000cd ' ,
146- 'darkblue ' => '#00008b ' ,
147- 'midnightblue ' => '#191970 ' ,
148- 'cornsilk ' => '#fff8dc ' ,
149- 'blanchedalmond ' => '#ffebcd ' ,
150- 'navajowhite ' => '#ffdead ' ,
151- 'burlywood ' => '#deb887 ' ,
152- 'rosybrown ' => '#bc8f8f ' ,
153- 'sandybrown ' => '#f4a460 ' ,
154- 'goldenrod ' => '#daa520 ' ,
155- 'darkgoldenrod ' => '#b8860b ' ,
156- 'chocolate ' => '#d2691e ' ,
157- 'saddlebrown ' => '#8b4513 ' ,
158- 'honeydew ' => '#f0fff0 ' ,
159- 'mintcream ' => '#f5fffa ' ,
160- 'aliceblue ' => '#f0f8ff ' ,
161- 'ghostwhite ' => '#f8f8ff ' ,
162- 'whitesmoke ' => '#f5f5f5 ' ,
163- 'seashell ' => '#fff5ee ' ,
164- 'oldlace ' => '#fdf5e6 ' ,
165- 'floralwhite ' => '#fffaf0 ' ,
166- 'antiquewhite ' => '#faebd7 ' ,
167- 'lavenderblush ' => '#fff0f5 ' ,
168- 'mistyrose ' => '#ffe4e1 ' ,
169- 'gainsboro ' => '#dcdcdc ' ,
170- 'lightgray ' => '#d3d3d3 ' ,
171- 'darkgray ' => '#a9a9a9 ' ,
172- 'dimgray ' => '#696969 ' ,
173- 'lightslategray ' => '#778899 ' ,
174- 'slategray ' => '#708090 ' ,
175- 'darkslategray ' => '#2f4f4f '
176- ],
177- 'minify ' => [
178- 'selectors ' => true , // minify selectors where possible
179- 'semicolons ' => true , // remove last semi-colon in each rule
180- 'zerounits ' => true , // remove the unit from 0 values where possible (0px => 0)
181- 'leadingzeros ' => true , // remove leading 0 from fractional values (0.5 => .5)
182- 'trailingzeros ' => true , // remove any trailing 0's from fractional values (74.0 => 74)
183- 'decimalplaces ' => 4 , // maximum number of decimal places for a value
184- 'multiples ' => true , // minify multiple values (margin: 20px 10px 20px 10px => margin: 20px 10px)
185- 'quotes ' => true , // remove quotes where possible (background: url("test.png") => background: url(test.png))
186- 'convertquotes ' => true , // convert single quotes to double quotes (content: '' => content: "")
187- 'colors ' => true , // shorten hex values and replace with named values where shorter (color: #FF0000 => color: red)
188- 'time ' => true , // shorten time values where possible (500ms => .5s)
189- 'fontweight ' => true , // shorten font-weight values (font-weight: bold => font-weight: 700)
190- 'none ' => true , // replace none with 0 where possible (border: none => border: 0)
191- 'lowerproperties ' => true , // lowercase property names (DISPLAY: BLOCK => display: BLOCK)
192- 'lowervalues ' => true , // lowercase values where possible (DISPLAY: BLOCK => DISPLAY: block)
193- 'empty ' => true // delete empty rules and @directives
194- ],
195- 'output ' => [
196- 'style ' => 'minify ' , // the output style, either 'minify' or 'beautify'
197- 'prefix ' => '' // a string to prefix every line with in beautify mode, used for adding indents to
198- ]
199- ];
200-
20132 /**
20233 * @var ?document $document The root document
20334 */
0 commit comments