Handle arbitrary attribute modifiers (kinda)
This commit is contained in:
parent
c183ea8c1e
commit
63dd66f0f7
@ -272,7 +272,7 @@ impl<'a> Lexer<'a> {
|
||||
'^' => AttributeKind::StartsWith,
|
||||
'$' => AttributeKind::EndsWith,
|
||||
'*' => AttributeKind::Contains,
|
||||
_ => todo!("expected kind (should be error)"),
|
||||
_ => todo!("Expected ']'")
|
||||
};
|
||||
|
||||
if kind != AttributeKind::Equals {
|
||||
@ -285,7 +285,7 @@ impl<'a> Lexer<'a> {
|
||||
let mut case_sensitive = CaseKind::Sensitive;
|
||||
|
||||
while let Some(c) = self.buf.peek() {
|
||||
if !c.is_alphabetic() && c != &'-' && c != &'_' && c != &'"' && c != &'\'' {
|
||||
if c == &']' && !c.is_whitespace() {
|
||||
break;
|
||||
}
|
||||
|
||||
@ -326,7 +326,6 @@ impl<'a> Lexer<'a> {
|
||||
.expect("this is impossible because we have already peeked");
|
||||
self.pos.next_char();
|
||||
value.push(tok);
|
||||
self.devour_whitespace();
|
||||
}
|
||||
|
||||
self.devour_whitespace();
|
||||
|
@ -346,8 +346,8 @@ pub(crate) enum CaseKind {
|
||||
impl Display for CaseKind {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
match self {
|
||||
Self::InsensitiveCapital => write!(f, " I"),
|
||||
Self::InsensitiveLowercase => write!(f, " i"),
|
||||
Self::InsensitiveCapital => write!(f, "I"),
|
||||
Self::InsensitiveLowercase => write!(f, "i"),
|
||||
Self::Sensitive => write!(f, ""),
|
||||
}
|
||||
}
|
||||
|
@ -129,12 +129,24 @@ mod test_selectors {
|
||||
test!(selector_attribute_any, "[attr] {\n color: red;\n}\n");
|
||||
test!(
|
||||
selector_attribute_any_lower_case_insensitive,
|
||||
"[attr i] {\n color: red;\n}\n"
|
||||
"[attr=val i] {\n color: red;\n}\n"
|
||||
);
|
||||
test!(
|
||||
selector_attribute_any_upper_case_insensitive,
|
||||
"[attr I] {\n color: red;\n}\n"
|
||||
"[attr=val I] {\n color: red;\n}\n"
|
||||
);
|
||||
test!(
|
||||
selector_attribute_arbitrary_modifier,
|
||||
"[attr=val c] {\n color: red;\n}\n"
|
||||
);
|
||||
test!(
|
||||
selector_attribute_i_in_attr,
|
||||
"[atitr=val] {\n color: red;\n}\n"
|
||||
);
|
||||
// test!(
|
||||
// selector_attribute_i_in_val,
|
||||
// "[attr=vail] {\n color: red;\n}\n"
|
||||
// );
|
||||
test!(
|
||||
selector_attribute_equals,
|
||||
"[attr=val] {\n color: red;\n}\n"
|
||||
|
Loading…
x
Reference in New Issue
Block a user