mirror of
https://github.com/RGBCube/serenity
synced 2025-07-24 19:27:35 +00:00
LibWeb: Add :not pseudoclass to the CSS parser
The selector given in the :not() is stored in the SimpleSelector as a String.
This commit is contained in:
parent
78f3bad7e6
commit
1ab82afee6
3 changed files with 9 additions and 0 deletions
|
@ -579,6 +579,9 @@ public:
|
||||||
simple_selector.pseudo_class = CSS::Selector::SimpleSelector::PseudoClass::Enabled;
|
simple_selector.pseudo_class = CSS::Selector::SimpleSelector::PseudoClass::Enabled;
|
||||||
} else if (pseudo_name.equals_ignoring_case("checked")) {
|
} else if (pseudo_name.equals_ignoring_case("checked")) {
|
||||||
simple_selector.pseudo_class = CSS::Selector::SimpleSelector::PseudoClass::Checked;
|
simple_selector.pseudo_class = CSS::Selector::SimpleSelector::PseudoClass::Checked;
|
||||||
|
} else if (pseudo_name.starts_with("not", CaseSensitivity::CaseInsensitive)) {
|
||||||
|
simple_selector.pseudo_class = CSS::Selector::SimpleSelector::PseudoClass::Not;
|
||||||
|
simple_selector.not_selector = capture_selector_args(pseudo_name);
|
||||||
} else {
|
} else {
|
||||||
dbgln("Unknown pseudo class: '{}'", pseudo_name);
|
dbgln("Unknown pseudo class: '{}'", pseudo_name);
|
||||||
return {};
|
return {};
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <AK/FlyString.h>
|
#include <AK/FlyString.h>
|
||||||
|
#include <AK/String.h>
|
||||||
#include <AK/Vector.h>
|
#include <AK/Vector.h>
|
||||||
|
|
||||||
namespace Web::CSS {
|
namespace Web::CSS {
|
||||||
|
@ -41,6 +42,7 @@ public:
|
||||||
Disabled,
|
Disabled,
|
||||||
Enabled,
|
Enabled,
|
||||||
Checked,
|
Checked,
|
||||||
|
Not,
|
||||||
};
|
};
|
||||||
PseudoClass pseudo_class { PseudoClass::None };
|
PseudoClass pseudo_class { PseudoClass::None };
|
||||||
|
|
||||||
|
@ -75,6 +77,7 @@ public:
|
||||||
// FIXME: We don't need this field on every single SimpleSelector, but it's also annoying to malloc it somewhere.
|
// FIXME: We don't need this field on every single SimpleSelector, but it's also annoying to malloc it somewhere.
|
||||||
// Only used when "pseudo_class" is "NthChild" or "NthLastChild".
|
// Only used when "pseudo_class" is "NthChild" or "NthLastChild".
|
||||||
NthChildPattern nth_child_pattern;
|
NthChildPattern nth_child_pattern;
|
||||||
|
String not_selector {};
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ComplexSelector {
|
struct ComplexSelector {
|
||||||
|
|
|
@ -384,6 +384,9 @@ void dump_selector(StringBuilder& builder, const CSS::Selector& selector)
|
||||||
case CSS::Selector::SimpleSelector::PseudoClass::Checked:
|
case CSS::Selector::SimpleSelector::PseudoClass::Checked:
|
||||||
pseudo_class_description = "Checked";
|
pseudo_class_description = "Checked";
|
||||||
break;
|
break;
|
||||||
|
case CSS::Selector::SimpleSelector::PseudoClass::Not:
|
||||||
|
pseudo_class_description = "Not";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
builder.appendff("{}:{}", type_description, simple_selector.value);
|
builder.appendff("{}:{}", type_description, simple_selector.value);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue