Handle classes/ids after pseudo-classes
This commit is contained in:
parent
0545673e61
commit
9f46a6af42
4 changed files with 64 additions and 14 deletions
|
@ -65,6 +65,14 @@ selector = st.recursive(
|
|||
),
|
||||
# Apply pseudo-suffix
|
||||
st.tuples(s, pseudo_suffixes(s)).map("".join),
|
||||
# Optionally add classes / id after the pseudo-suffix
|
||||
st.one_of(
|
||||
s, # no append, keep as-is
|
||||
st.tuples(
|
||||
s,
|
||||
st.lists(st.one_of(css_class, css_id), min_size=1).map("".join),
|
||||
).map("".join),
|
||||
),
|
||||
),
|
||||
max_leaves=10,
|
||||
)
|
||||
|
|
|
@ -424,6 +424,14 @@ def test_parse_not_with_missing_argument() -> None:
|
|||
_ = NotPseudoClassSelector.from_pseudo_cls(pseudo)
|
||||
|
||||
|
||||
def test_parse_class_after_pseudo_class() -> None:
|
||||
tokens = TokenStream([Token(TokenType.PSEUDO_CLASS, ":first-child"), Token(TokenType.CLASS, ".bar")])
|
||||
sel = parse_tokens(tokens)
|
||||
assert isinstance(sel, NthChildPseudoClassSelector)
|
||||
assert isinstance(sel.selector, SimpleSelector)
|
||||
assert sel.selector.classes == ["bar"]
|
||||
|
||||
|
||||
def test_parse_multiple_combinators() -> None:
|
||||
# div .parent > .child + .sibling:not(.bar):first-child
|
||||
tokens = TokenStream(
|
||||
|
|
|
@ -228,6 +228,7 @@ def test_sibling_selector(selector: str, expected: list[Node]) -> None:
|
|||
("div:last-child", [SECOND_DIV]),
|
||||
("div.nonexistent:last-child", []),
|
||||
(".colour-primary:first-child", [INNER_DIV, SECOND_P]),
|
||||
(":first-child.colour-primary", [INNER_DIV, SECOND_P]),
|
||||
],
|
||||
)
|
||||
def test_nth_child_selector(selector: str, expected: list[Node]) -> None:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue