add support for @apply statements

fixes #5.
pull/573/head
Tommy MacWilliam 2022-02-03 21:48:21 +07:00
parent 4bf1ed8790
commit c478c68686
5 changed files with 7901 additions and 7519 deletions

@ -254,6 +254,17 @@ Extend statements
(block (extend_statement (plain_value))
(extend_statement (class_selector (class_name))))))))
==============================
Apply statements
==============================
@apply fill-red-50 border-black col-span-1;
---
(stylesheet
(apply_statement (plain_value) (plain_value) (plain_value)))
=================================
Operators
=================================

@ -24,6 +24,7 @@ module.exports = grammar({
$.supports_statement,
$.use_statement,
$.forward_statement,
$.apply_statement,
$.mixin_statement,
$.include_statement,
$.if_statement,
@ -76,6 +77,8 @@ module.exports = grammar({
forward_statement: ($) => seq("@forward", $._value, ";"),
apply_statement: ($) => seq("@apply", repeat($._value), ";"),
parameters: ($) => seq("(", sep1(",", $.parameter), ")"),
parameter: ($) =>

24
src/grammar.json vendored

@ -51,6 +51,10 @@
"type": "SYMBOL",
"name": "forward_statement"
},
{
"type": "SYMBOL",
"name": "apply_statement"
},
{
"type": "SYMBOL",
"name": "mixin_statement"
@ -445,6 +449,26 @@
}
]
},
"apply_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "@apply"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_value"
}
},
{
"type": "STRING",
"value": ";"
}
]
},
"parameters": {
"type": "SEQ",
"members": [

@ -62,6 +62,53 @@
]
}
},
{
"type": "apply_statement",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "color_value",
"named": true
},
{
"type": "float_value",
"named": true
},
{
"type": "integer_value",
"named": true
},
{
"type": "parenthesized_value",
"named": true
},
{
"type": "plain_value",
"named": true
},
{
"type": "string_value",
"named": true
},
{
"type": "variable_value",
"named": true
}
]
}
},
{
"type": "argument",
"named": true,
@ -2366,6 +2413,10 @@
"multiple": true,
"required": false,
"types": [
{
"type": "apply_statement",
"named": true
},
{
"type": "at_rule",
"named": true
@ -2816,6 +2867,10 @@
"type": ">=",
"named": false
},
{
"type": "@apply",
"named": false
},
{
"type": "@at-root",
"named": false

15327
src/parser.c vendored

File diff suppressed because it is too large Load Diff