Renaming "declaration" tokens to differentiate between rule and variable declarations

This commit is contained in:
Darren Burns
2022-02-01 12:37:22 +00:00
parent a99d60f9f8
commit 9d5d6b1008
3 changed files with 29 additions and 29 deletions

View File

@@ -56,7 +56,7 @@ def parse_selectors(css_selectors: str) -> tuple[SelectorSet, ...]:
rule_selectors.append(selectors[:])
selectors.clear()
combinator = None
elif token.name == "declaration_set_start":
elif token.name == "rule_declaration_set_start":
break
elif token.name == "combinator_child":
combinator = CombinatorType.CHILD
@@ -98,7 +98,7 @@ def parse_rule_set(tokens: Iterator[Token], token: Token) -> Iterable[RuleSet]:
rule_selectors.append(selectors[:])
selectors.clear()
combinator = None
elif token.name == "declaration_set_start":
elif token.name == "rule_declaration_set_start":
break
elif token.name == "combinator_child":
combinator = CombinatorType.CHILD
@@ -128,9 +128,9 @@ def parse_rule_set(tokens: Iterator[Token], token: Token) -> Iterable[RuleSet]:
while True:
token = next(tokens)
token_name = token.name
if token_name in ("whitespace", "declaration_end"):
if token_name in ("whitespace", "rule_declaration_end"):
continue
if token_name == "declaration_name":
if token_name == "rule_declaration_name":
if declaration.tokens:
try:
styles_builder.add_declaration(declaration)
@@ -138,7 +138,7 @@ def parse_rule_set(tokens: Iterator[Token], token: Token) -> Iterable[RuleSet]:
errors.append((error.token, error.message))
declaration = Declaration(token, "")
declaration.name = token.value.rstrip(":")
elif token_name == "declaration_set_end":
elif token_name == "rule_declaration_set_end":
break
else:
declaration.tokens.append(token)
@@ -178,9 +178,9 @@ def parse_declarations(css: str, path: str) -> Styles:
if token is None:
break
token_name = token.name
if token_name in ("whitespace", "declaration_end", "eof"):
if token_name in ("whitespace", "rule_declaration_end", "eof"):
continue
if token_name == "declaration_name":
if token_name == "rule_declaration_name":
if declaration and declaration.tokens:
try:
styles_builder.add_declaration(declaration)
@@ -189,7 +189,7 @@ def parse_declarations(css: str, path: str) -> Styles:
raise
declaration = Declaration(token, "")
declaration.name = token.value.rstrip(":")
elif token_name == "declaration_set_end":
elif token_name == "rule_declaration_set_end":
break
else:
if declaration:

View File

@@ -44,25 +44,25 @@ expect_selector_continue = Expect(
selector=r"[a-zA-Z_\-]+",
combinator_child=">",
new_selector=r",",
declaration_set_start=r"\{",
rule_declaration_set_start=r"\{",
)
expect_declaration = Expect(
expect_rule_declaration = Expect(
whitespace=r"\s+",
comment_start=r"\/\*",
declaration_name=r"[a-zA-Z_\-]+\:",
declaration_set_end=r"\}",
rule_declaration_name=r"[a-zA-Z_\-]+\:",
rule_declaration_set_end=r"\}",
)
expect_declaration_solo = Expect(
expect_rule_declaration_solo = Expect(
whitespace=r"\s+",
comment_start=r"\/\*",
declaration_name=r"[a-zA-Z_\-]+\:",
declaration_set_end=r"\}",
rule_declaration_name=r"[a-zA-Z_\-]+\:",
rule_declaration_set_end=r"\}",
).expect_eof(True)
expect_declaration_content = Expect(
declaration_end=r"\n|;",
expect_rule_declaration_content = Expect(
rule_declaration_end=r"\n|;",
whitespace=r"\s+",
comment_start=r"\/\*",
scalar=r"\-?\d+\.?\d*(?:fr|%|w|h|vw|vh)",
@@ -74,7 +74,7 @@ expect_declaration_content = Expect(
string=r"\".*?\"",
important=r"\!important",
comma=",",
declaration_set_end=r"\}",
rule_declaration_set_end=r"\}",
)
@@ -99,10 +99,10 @@ class TokenizerState:
"selector_id": expect_selector_continue,
"selector_class": expect_selector_continue,
"selector_universal": expect_selector_continue,
"declaration_set_start": expect_declaration,
"declaration_name": expect_declaration_content,
"declaration_end": expect_declaration,
"declaration_set_end": expect_root_scope,
"rule_declaration_set_start": expect_rule_declaration,
"rule_declaration_name": expect_rule_declaration_content,
"rule_declaration_end": expect_rule_declaration,
"rule_declaration_set_end": expect_root_scope,
}
def __call__(self, code: str, path: str) -> Iterable[Token]:
@@ -123,10 +123,10 @@ class TokenizerState:
class DeclarationTokenizerState(TokenizerState):
EXPECT = expect_declaration_solo
EXPECT = expect_rule_declaration_solo
STATE_MAP = {
"declaration_name": expect_declaration_content,
"declaration_end": expect_declaration_solo,
"rule_declaration_name": expect_rule_declaration_content,
"rule_declaration_end": expect_rule_declaration_solo,
}

View File

@@ -64,11 +64,11 @@ def test_variables_declarations_amongst_rulesets():
Token(name='variable_declaration_end', value=';', path='', code=css, location=(0, 4)),
Token(name='whitespace', value=' ', path='', code=css, location=(0, 5)),
Token(name='selector_start_class', value='.thing', path='', code=css, location=(0, 6)),
Token(name='declaration_set_start', value='{', path='', code=css, location=(0, 12)),
Token(name='declaration_name', value='text:', path='', code=css, location=(0, 13)),
Token(name='rule_declaration_set_start', value='{', path='', code=css, location=(0, 12)),
Token(name='rule_declaration_name', value='text:', path='', code=css, location=(0, 13)),
Token(name='token', value='red', path='', code=css, location=(0, 18)),
Token(name='declaration_end', value=';', path='', code=css, location=(0, 21)),
Token(name='declaration_set_end', value='}', path='', code=css, location=(0, 22)),
Token(name='rule_declaration_end', value=';', path='', code=css, location=(0, 21)),
Token(name='rule_declaration_set_end', value='}', path='', code=css, location=(0, 22)),
Token(name='whitespace', value=' ', path='', code=css, location=(0, 23)),
Token(name='variable_declaration_start', value='$y:', path='', code=css, location=(0, 24)),
Token(name='number', value='2', path='', code=css, location=(0, 27)),