mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 22:17:45 +00:00
LibWeb: Parse :before and :after pseudo-elements
Note that this is the old CSS2 syntax, we don't support the CSS3 syntax just yet. Also we don't actually implement the pseudo-elements, this is really just to make the selectors distinct from the same ones without these pseudo-elements.
This commit is contained in:
parent
eef30bb05e
commit
bbcc71fec4
3 changed files with 21 additions and 0 deletions
|
@ -502,6 +502,7 @@ public:
|
||||||
return CSS::Selector::SimpleSelector {
|
return CSS::Selector::SimpleSelector {
|
||||||
type,
|
type,
|
||||||
CSS::Selector::SimpleSelector::PseudoClass::None,
|
CSS::Selector::SimpleSelector::PseudoClass::None,
|
||||||
|
CSS::Selector::SimpleSelector::PseudoElement::None,
|
||||||
String(),
|
String(),
|
||||||
CSS::Selector::SimpleSelector::AttributeMatchType::None,
|
CSS::Selector::SimpleSelector::AttributeMatchType::None,
|
||||||
String(),
|
String(),
|
||||||
|
@ -537,6 +538,7 @@ public:
|
||||||
CSS::Selector::SimpleSelector simple_selector {
|
CSS::Selector::SimpleSelector simple_selector {
|
||||||
type,
|
type,
|
||||||
CSS::Selector::SimpleSelector::PseudoClass::None,
|
CSS::Selector::SimpleSelector::PseudoClass::None,
|
||||||
|
CSS::Selector::SimpleSelector::PseudoElement::None,
|
||||||
value,
|
value,
|
||||||
CSS::Selector::SimpleSelector::AttributeMatchType::None,
|
CSS::Selector::SimpleSelector::AttributeMatchType::None,
|
||||||
String(),
|
String(),
|
||||||
|
@ -639,6 +641,10 @@ public:
|
||||||
simple_selector.pseudo_class = CSS::Selector::SimpleSelector::PseudoClass::Empty;
|
simple_selector.pseudo_class = CSS::Selector::SimpleSelector::PseudoClass::Empty;
|
||||||
else if (pseudo_name.equals_ignoring_case("root"))
|
else if (pseudo_name.equals_ignoring_case("root"))
|
||||||
simple_selector.pseudo_class = CSS::Selector::SimpleSelector::PseudoClass::Root;
|
simple_selector.pseudo_class = CSS::Selector::SimpleSelector::PseudoClass::Root;
|
||||||
|
else if (pseudo_name.equals_ignoring_case("before"))
|
||||||
|
simple_selector.pseudo_element = CSS::Selector::SimpleSelector::PseudoElement::Before;
|
||||||
|
else if (pseudo_name.equals_ignoring_case("after"))
|
||||||
|
simple_selector.pseudo_element = CSS::Selector::SimpleSelector::PseudoElement::After;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (index == index_at_start) {
|
if (index == index_at_start) {
|
||||||
|
|
|
@ -57,6 +57,13 @@ public:
|
||||||
};
|
};
|
||||||
PseudoClass pseudo_class { PseudoClass::None };
|
PseudoClass pseudo_class { PseudoClass::None };
|
||||||
|
|
||||||
|
enum class PseudoElement {
|
||||||
|
None,
|
||||||
|
Before,
|
||||||
|
After,
|
||||||
|
};
|
||||||
|
PseudoElement pseudo_element { PseudoElement::None };
|
||||||
|
|
||||||
FlyString value;
|
FlyString value;
|
||||||
|
|
||||||
enum class AttributeMatchType {
|
enum class AttributeMatchType {
|
||||||
|
|
|
@ -44,6 +44,14 @@ static bool matches_hover_pseudo_class(const DOM::Element& element)
|
||||||
|
|
||||||
static bool matches(const CSS::Selector::SimpleSelector& component, const DOM::Element& element)
|
static bool matches(const CSS::Selector::SimpleSelector& component, const DOM::Element& element)
|
||||||
{
|
{
|
||||||
|
switch (component.pseudo_element) {
|
||||||
|
case CSS::Selector::SimpleSelector::PseudoElement::None:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// FIXME: Implement pseudo-elements.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
switch (component.pseudo_class) {
|
switch (component.pseudo_class) {
|
||||||
case CSS::Selector::SimpleSelector::PseudoClass::None:
|
case CSS::Selector::SimpleSelector::PseudoClass::None:
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue