1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 04:57:44 +00:00

LibHTML: Implement the universal selector ("*")

This commit is contained in:
Andreas Kling 2019-11-19 18:22:12 +01:00
parent 516708aab2
commit 56dad2272c
4 changed files with 12 additions and 0 deletions

View file

@ -9,6 +9,7 @@ public:
struct Component {
enum class Type {
Invalid,
Universal,
TagName,
Id,
Class,

View file

@ -30,6 +30,8 @@ bool matches(const Selector::Component& component, const Element& element)
}
switch (component.type) {
case Selector::Component::Type::Universal:
return true;
case Selector::Component::Type::Id:
return component.value == element.attribute("id");
case Selector::Component::Type::Class:

View file

@ -150,6 +150,9 @@ void dump_rule(const StyleRule& rule)
case Selector::Component::Type::Invalid:
type_description = "Invalid";
break;
case Selector::Component::Type::Universal:
type_description = "Universal";
break;
case Selector::Component::Type::Id:
type_description = "Id";
break;

View file

@ -224,6 +224,12 @@ public:
consume_whitespace_or_comments();
}
if (peek() == '*') {
type = Selector::Component::Type::Universal;
consume_one();
return Selector::Component { type, Selector::Component::PseudoClass::None, relation, String() };
}
if (peek() == '.') {
type = Selector::Component::Type::Class;
consume_one();