@@ -245,23 +245,11 @@ namespace Sass {
245
245
exactly <' /' >,
246
246
optional <
247
247
sequence <
248
- zero_plus <
249
- exactly <' -' >
250
- >,
251
- alternatives <
252
- identifier,
253
- interpolant
254
- >,
248
+ css_ip_identifier,
255
249
exactly <' |' >
256
250
>
257
251
>,
258
- zero_plus <
259
- exactly <' -' >
260
- >,
261
- alternatives <
262
- identifier,
263
- interpolant
264
- >,
252
+ css_ip_identifier,
265
253
exactly <' /' >
266
254
> (src);
267
255
}
@@ -388,19 +376,67 @@ namespace Sass {
388
376
return word<null_kwd>(src);
389
377
}
390
378
379
+ const char * css_identifier (const char * src) {
380
+ return sequence <
381
+ zero_plus <
382
+ exactly <' -' >
383
+ >,
384
+ identifier
385
+ >(src);
386
+ }
387
+
388
+ const char * css_ip_identifier (const char * src) {
389
+ return sequence <
390
+ zero_plus <
391
+ exactly <' -' >
392
+ >,
393
+ alternatives <
394
+ identifier,
395
+ interpolant
396
+ >
397
+ >(src);
398
+ }
399
+
391
400
// Match CSS type selectors
392
401
const char * namespace_prefix (const char * src) {
393
- return sequence< optional< alternatives< identifier, exactly<' *' > > >,
394
- exactly<' |' >, negate<exactly<' =' >> >(src);
402
+ return sequence <
403
+ optional <
404
+ alternatives <
405
+ exactly <' *' >,
406
+ css_identifier
407
+ >
408
+ >,
409
+ exactly <' |' >,
410
+ negate <
411
+ exactly <' =' >
412
+ >
413
+ >(src);
395
414
}
415
+
416
+ // Match CSS type selectors
417
+ const char * namespace_schema (const char * src) {
418
+ return sequence <
419
+ optional <
420
+ alternatives <
421
+ exactly <' *' >,
422
+ css_ip_identifier
423
+ >
424
+ >,
425
+ exactly<' |' >,
426
+ negate <
427
+ exactly <' =' >
428
+ >
429
+ >(src);
430
+ }
431
+
396
432
const char * hyphens_and_identifier (const char * src) {
397
433
return sequence< zero_plus< exactly< ' -' > >, identifier >(src);
398
434
}
399
435
const char * hyphens_and_name (const char * src) {
400
436
return sequence< zero_plus< exactly< ' -' > >, name >(src);
401
437
}
402
438
const char * universal (const char * src) {
403
- return sequence< optional<namespace_prefix >, exactly<' *' > >(src);
439
+ return sequence< optional<namespace_schema >, exactly<' *' > >(src);
404
440
}
405
441
// Match CSS id names.
406
442
const char * id_name (const char * src) {
@@ -412,7 +448,7 @@ namespace Sass {
412
448
}
413
449
// Attribute name in an attribute selector.
414
450
const char * attribute_name (const char * src) {
415
- return alternatives< sequence< optional<namespace_prefix >, identifier>,
451
+ return alternatives< sequence< optional<namespace_schema >, identifier>,
416
452
identifier >(src);
417
453
}
418
454
// match placeholder selectors
@@ -879,7 +915,7 @@ namespace Sass {
879
915
}
880
916
881
917
const char * type_selector (const char * src) {
882
- return sequence< optional<namespace_prefix >, identifier>(src);
918
+ return sequence< optional<namespace_schema >, identifier>(src);
883
919
}
884
920
const char * re_type_selector (const char * src) {
885
921
return alternatives< type_selector, universal, quoted_string, dimension, percentage, number, identifier_alnums >(src);
0 commit comments