@@ -80,7 +80,7 @@ function parse(tokens) {
80
80
case "CDC" :
81
81
case "WHITESPACE" : break ;
82
82
case "AT-KEYWORD" : push ( new AtRule ( token . value ) ) && switchto ( 'at-rule' ) ; break ;
83
- case "{" : parseerror ( "Attempt to open a curly-block at top-level." ) && consumeASimpleBlock ( token ) ; break ;
83
+ case "{" : parseerror ( "Attempt to open a curly-block at top-level." ) && consumeAPrimitive ( ) ; break ;
84
84
default : push ( new StyleRule ) && switchto ( 'selector' ) && reprocess ( ) ;
85
85
}
86
86
break ;
@@ -92,10 +92,7 @@ function parse(tokens) {
92
92
if ( rule . fillType !== '' ) switchto ( rule . fillType ) ;
93
93
else parseerror ( "Attempt to open a curly-block in a statement-type at-rule." ) && switchto ( 'next-block' ) && reprocess ( ) ;
94
94
break ;
95
- case "[" :
96
- case "(" : rule . appendPrelude ( consumeASimpleBlock ( token ) ) ; break ;
97
- case "FUNCTION" : rule . appendPrelude ( consumeAFunc ( token ) ) ; break ;
98
- default : rule . appendPrelude ( token ) ;
95
+ default : rule . appendPrelude ( consumeAPrimitive ( ) ) ;
99
96
}
100
97
break ;
101
98
@@ -113,10 +110,7 @@ function parse(tokens) {
113
110
case "selector" :
114
111
switch ( token . tokenType ) {
115
112
case "{" : switchto ( 'declaration' ) ; break ;
116
- case "[" :
117
- case "(" : rule . appendSelector ( consumeASimpleBlock ( token ) ) ; break ;
118
- case "FUNCTION" : rule . appendSelector ( consumeAFunc ( token ) ) ; break ;
119
- default : rule . appendSelector ( token ) ;
113
+ default : rule . appendSelector ( consumeAPrimitive ( ) ) ;
120
114
}
121
115
break ;
122
116
@@ -142,10 +136,6 @@ function parse(tokens) {
142
136
143
137
case "declaration-value" :
144
138
switch ( token . tokenType ) {
145
- case "{" :
146
- case "[" :
147
- case "(" : decl . append ( consumeASimpleBlock ( token ) ) ; break ;
148
- case "FUNCTION" : decl . append ( consumeAFunc ( token ) ) ; break ;
149
139
case "DELIM" :
150
140
if ( token . value == "!" && next ( ) . tokenType == 'IDENTIFIER' && next ( ) . value . toLowerCase ( ) == "important" ) {
151
141
consume ( ) ;
@@ -157,7 +147,7 @@ function parse(tokens) {
157
147
break ;
158
148
case ";" : rule . append ( decl ) && discarddecl ( ) && switchto ( ) ; break ;
159
149
case "}" : rule . append ( decl ) && discarddecl ( ) && pop ( ) && switchto ( ) ; break ;
160
- default : decl . append ( token ) ;
150
+ default : decl . append ( consumeAPrimitive ( ) ) ;
161
151
}
162
152
break ;
163
153
@@ -172,23 +162,16 @@ function parse(tokens) {
172
162
173
163
case "next-block" :
174
164
switch ( token . tokenType ) {
175
- case "{" : consumeASimpleBlock ( token ) && switchto ( ) ; break ;
176
- case "[" :
177
- case "(" : consumeASimpleBlock ( token ) ; break ;
178
- case "FUNCTION" : consumeAFunc ( token ) ; break ;
179
- default : break ;
165
+ case "{" : consumeAPrimitive ( ) && switchto ( ) ; break ;
166
+ default : consumeAPrimitive ( ) ; break ;
180
167
}
181
168
break ;
182
169
183
170
case "next-declaration" :
184
171
switch ( token . tokenType ) {
185
172
case ";" : switchto ( 'declaration' ) ; break ;
186
173
case "}" : switchto ( 'declaration' ) && reprocess ( ) ; break ;
187
- case "{" :
188
- case "[" :
189
- case "(" : consumeASimpleBlock ( token ) ; break ;
190
- case "FUNCTION" : consumeAFunc ( token ) ; break ;
191
- default : break ;
174
+ default : consumeAPrimitive ( ) ; break ;
192
175
}
193
176
break ;
194
177
@@ -199,26 +182,32 @@ function parse(tokens) {
199
182
}
200
183
}
201
184
202
- function consumeASimpleBlock ( startToken ) {
203
- var endingTokenType = { "(" :")" , "[" :"]" , "{" :"}" } [ startToken . tokenType ] ;
204
- var block = new SimpleBlock ( startToken . tokenType ) ;
185
+ function consumeAPrimitive ( ) {
186
+ switch ( token . tokenType ) {
187
+ case "{" :
188
+ case "[" :
189
+ case "{" : return consumeASimpleBlock ( ) ;
190
+ case "FUNCTION" : return consumeAFunc ( ) ;
191
+ default : return token ;
192
+ }
193
+ }
194
+
195
+ function consumeASimpleBlock ( ) {
196
+ var endingTokenType = { "(" :")" , "[" :"]" , "{" :"}" } [ token . tokenType ] ;
197
+ var block = new SimpleBlock ( token . tokenType ) ;
205
198
206
199
for ( ; ; ) {
207
200
consume ( ) ;
208
201
switch ( token . tokenType ) {
209
202
case "EOF" :
210
203
case endingTokenType : return block ;
211
- case "{" :
212
- case "[" :
213
- case "(" : block . append ( consumeASimpleBlock ( token ) ) ; break ;
214
- case "FUNCTION" : block . append ( consumeAFunc ( token ) ) ; break ;
215
- default : block . append ( token ) ;
204
+ default : block . append ( consumeAPrimitive ( ) ) ;
216
205
}
217
206
}
218
207
}
219
208
220
- function consumeAFunc ( startToken ) {
221
- var func = new Func ( startToken . value ) ;
209
+ function consumeAFunc ( ) {
210
+ var func = new Func ( token . value ) ;
222
211
var arg = new FuncArg ( ) ;
223
212
224
213
for ( ; ; ) {
@@ -234,11 +223,7 @@ function parse(tokens) {
234
223
arg . append ( token ) ;
235
224
}
236
225
break ;
237
- case "{" :
238
- case "[" :
239
- case "(" : arg . append ( consumeASimpleBlock ( token ) ) ; break ;
240
- case "FUNCTION" : arg . append ( consumeAFunc ( token ) ) ; break ;
241
- default : arg . append ( token ) ;
226
+ default : arg . append ( consumeAPrimitive ( ) ) ;
242
227
}
243
228
}
244
229
}
0 commit comments