mirror of
https://github.com/RGBCube/serenity
synced 2025-05-19 23:35:08 +00:00
LibHTML: Parse the :link and :hover CSS pseudo-classes
We don't actually do anything with these yet, but now the values will be there for the selector engine to look at when it feels ready. :^)
This commit is contained in:
parent
e4015ab7cc
commit
605a225b53
2 changed files with 22 additions and 4 deletions
|
@ -15,6 +15,13 @@ public:
|
||||||
};
|
};
|
||||||
Type type { Type::Invalid };
|
Type type { Type::Invalid };
|
||||||
|
|
||||||
|
enum class PseudoClass {
|
||||||
|
None,
|
||||||
|
Link,
|
||||||
|
Hover,
|
||||||
|
};
|
||||||
|
PseudoClass pseudo_class { PseudoClass::None };
|
||||||
|
|
||||||
enum class Relation {
|
enum class Relation {
|
||||||
None,
|
None,
|
||||||
ImmediateChild,
|
ImmediateChild,
|
||||||
|
|
|
@ -197,7 +197,7 @@ public:
|
||||||
buffer.append(consume_one());
|
buffer.append(consume_one());
|
||||||
|
|
||||||
PARSE_ASSERT(!buffer.is_null());
|
PARSE_ASSERT(!buffer.is_null());
|
||||||
Selector::Component component { type, relation, String::copy(buffer) };
|
Selector::Component component { type, Selector::Component::PseudoClass::None, relation, String::copy(buffer) };
|
||||||
buffer.clear();
|
buffer.clear();
|
||||||
|
|
||||||
if (peek() == '[') {
|
if (peek() == '[') {
|
||||||
|
@ -209,12 +209,23 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
if (peek() == ':') {
|
if (peek() == ':') {
|
||||||
// FIXME: Implement pseudo stuff.
|
// FIXME: Implement pseudo elements.
|
||||||
|
[[maybe_unused]] bool is_pseudo_element = false;
|
||||||
consume_one();
|
consume_one();
|
||||||
if (peek() == ':')
|
if (peek() == ':') {
|
||||||
|
is_pseudo_element = true;
|
||||||
consume_one();
|
consume_one();
|
||||||
|
}
|
||||||
while (is_valid_selector_char(peek()))
|
while (is_valid_selector_char(peek()))
|
||||||
consume_one();
|
buffer.append(consume_one());
|
||||||
|
|
||||||
|
auto pseudo_name = String::copy(buffer);
|
||||||
|
buffer.clear();
|
||||||
|
|
||||||
|
if (pseudo_name == "link")
|
||||||
|
component.pseudo_class = Selector::Component::PseudoClass::Link;
|
||||||
|
else if (pseudo_name == "hover")
|
||||||
|
component.pseudo_class = Selector::Component::PseudoClass::Hover;
|
||||||
}
|
}
|
||||||
|
|
||||||
return component;
|
return component;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue