mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:47:34 +00:00
LibWeb: Move PseudoElement enum up a level
This in preparation for changing how we store these, plus it's unwieldy having to type CSS::Selector::SimpleSelector::PseudoElement.
This commit is contained in:
parent
5390e05851
commit
caef4ec157
4 changed files with 28 additions and 28 deletions
|
@ -497,13 +497,13 @@ Result<Selector::SimpleSelector, Parser::ParsingResult> Parser::parse_simple_sel
|
||||||
return ParsingResult::IncludesIgnoredVendorPrefix;
|
return ParsingResult::IncludesIgnoredVendorPrefix;
|
||||||
|
|
||||||
if (pseudo_name.equals_ignoring_case("after")) {
|
if (pseudo_name.equals_ignoring_case("after")) {
|
||||||
simple_selector.pseudo_element = Selector::SimpleSelector::PseudoElement::After;
|
simple_selector.pseudo_element = Selector::PseudoElement::After;
|
||||||
} else if (pseudo_name.equals_ignoring_case("before")) {
|
} else if (pseudo_name.equals_ignoring_case("before")) {
|
||||||
simple_selector.pseudo_element = Selector::SimpleSelector::PseudoElement::Before;
|
simple_selector.pseudo_element = Selector::PseudoElement::Before;
|
||||||
} else if (pseudo_name.equals_ignoring_case("first-letter")) {
|
} else if (pseudo_name.equals_ignoring_case("first-letter")) {
|
||||||
simple_selector.pseudo_element = Selector::SimpleSelector::PseudoElement::FirstLetter;
|
simple_selector.pseudo_element = Selector::PseudoElement::FirstLetter;
|
||||||
} else if (pseudo_name.equals_ignoring_case("first-line")) {
|
} else if (pseudo_name.equals_ignoring_case("first-line")) {
|
||||||
simple_selector.pseudo_element = Selector::SimpleSelector::PseudoElement::FirstLine;
|
simple_selector.pseudo_element = Selector::PseudoElement::FirstLine;
|
||||||
} else {
|
} else {
|
||||||
dbgln_if(CSS_PARSER_DEBUG, "Unrecognized pseudo-element: '::{}'", pseudo_name);
|
dbgln_if(CSS_PARSER_DEBUG, "Unrecognized pseudo-element: '::{}'", pseudo_name);
|
||||||
return ParsingResult::SyntaxError;
|
return ParsingResult::SyntaxError;
|
||||||
|
@ -561,19 +561,19 @@ Result<Selector::SimpleSelector, Parser::ParsingResult> Parser::parse_simple_sel
|
||||||
} else if (pseudo_name.equals_ignoring_case("after")) {
|
} else if (pseudo_name.equals_ignoring_case("after")) {
|
||||||
// Single-colon syntax allowed for compatibility. https://www.w3.org/TR/selectors/#pseudo-element-syntax
|
// Single-colon syntax allowed for compatibility. https://www.w3.org/TR/selectors/#pseudo-element-syntax
|
||||||
simple_selector.type = Selector::SimpleSelector::Type::PseudoElement;
|
simple_selector.type = Selector::SimpleSelector::Type::PseudoElement;
|
||||||
simple_selector.pseudo_element = Selector::SimpleSelector::PseudoElement::After;
|
simple_selector.pseudo_element = Selector::PseudoElement::After;
|
||||||
} else if (pseudo_name.equals_ignoring_case("before")) {
|
} else if (pseudo_name.equals_ignoring_case("before")) {
|
||||||
// See :after
|
// See :after
|
||||||
simple_selector.type = Selector::SimpleSelector::Type::PseudoElement;
|
simple_selector.type = Selector::SimpleSelector::Type::PseudoElement;
|
||||||
simple_selector.pseudo_element = Selector::SimpleSelector::PseudoElement::Before;
|
simple_selector.pseudo_element = Selector::PseudoElement::Before;
|
||||||
} else if (pseudo_name.equals_ignoring_case("first-letter")) {
|
} else if (pseudo_name.equals_ignoring_case("first-letter")) {
|
||||||
// See :after
|
// See :after
|
||||||
simple_selector.type = Selector::SimpleSelector::Type::PseudoElement;
|
simple_selector.type = Selector::SimpleSelector::Type::PseudoElement;
|
||||||
simple_selector.pseudo_element = Selector::SimpleSelector::PseudoElement::FirstLetter;
|
simple_selector.pseudo_element = Selector::PseudoElement::FirstLetter;
|
||||||
} else if (pseudo_name.equals_ignoring_case("first-line")) {
|
} else if (pseudo_name.equals_ignoring_case("first-line")) {
|
||||||
// See :after
|
// See :after
|
||||||
simple_selector.type = Selector::SimpleSelector::Type::PseudoElement;
|
simple_selector.type = Selector::SimpleSelector::Type::PseudoElement;
|
||||||
simple_selector.pseudo_element = Selector::SimpleSelector::PseudoElement::FirstLine;
|
simple_selector.pseudo_element = Selector::PseudoElement::FirstLine;
|
||||||
} else {
|
} else {
|
||||||
dbgln_if(CSS_PARSER_DEBUG, "Unrecognized pseudo-class: ':{}'", pseudo_name);
|
dbgln_if(CSS_PARSER_DEBUG, "Unrecognized pseudo-class: ':{}'", pseudo_name);
|
||||||
return ParsingResult::SyntaxError;
|
return ParsingResult::SyntaxError;
|
||||||
|
|
|
@ -240,18 +240,18 @@ String serialize_a_group_of_selectors(NonnullRefPtrVector<Selector> const& selec
|
||||||
return builder.to_string();
|
return builder.to_string();
|
||||||
}
|
}
|
||||||
|
|
||||||
constexpr StringView pseudo_element_name(Selector::SimpleSelector::PseudoElement pseudo_element)
|
constexpr StringView pseudo_element_name(Selector::PseudoElement pseudo_element)
|
||||||
{
|
{
|
||||||
switch (pseudo_element) {
|
switch (pseudo_element) {
|
||||||
case Selector::SimpleSelector::PseudoElement::Before:
|
case Selector::PseudoElement::Before:
|
||||||
return "before"sv;
|
return "before"sv;
|
||||||
case Selector::SimpleSelector::PseudoElement::After:
|
case Selector::PseudoElement::After:
|
||||||
return "after"sv;
|
return "after"sv;
|
||||||
case Selector::SimpleSelector::PseudoElement::FirstLine:
|
case Selector::PseudoElement::FirstLine:
|
||||||
return "first-line"sv;
|
return "first-line"sv;
|
||||||
case Selector::SimpleSelector::PseudoElement::FirstLetter:
|
case Selector::PseudoElement::FirstLetter:
|
||||||
return "first-letter"sv;
|
return "first-letter"sv;
|
||||||
case Selector::SimpleSelector::PseudoElement::None:
|
case Selector::PseudoElement::None:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
VERIFY_NOT_REACHED();
|
VERIFY_NOT_REACHED();
|
||||||
|
|
|
@ -20,6 +20,14 @@ using SelectorList = NonnullRefPtrVector<class Selector>;
|
||||||
// This is a <complex-selector> in the spec. https://www.w3.org/TR/selectors-4/#complex
|
// This is a <complex-selector> in the spec. https://www.w3.org/TR/selectors-4/#complex
|
||||||
class Selector : public RefCounted<Selector> {
|
class Selector : public RefCounted<Selector> {
|
||||||
public:
|
public:
|
||||||
|
enum class PseudoElement {
|
||||||
|
None,
|
||||||
|
Before,
|
||||||
|
After,
|
||||||
|
FirstLine,
|
||||||
|
FirstLetter,
|
||||||
|
};
|
||||||
|
|
||||||
struct SimpleSelector {
|
struct SimpleSelector {
|
||||||
enum class Type {
|
enum class Type {
|
||||||
Invalid,
|
Invalid,
|
||||||
|
@ -75,14 +83,6 @@ public:
|
||||||
SelectorList not_selector {};
|
SelectorList not_selector {};
|
||||||
};
|
};
|
||||||
PseudoClass pseudo_class {};
|
PseudoClass pseudo_class {};
|
||||||
|
|
||||||
enum class PseudoElement {
|
|
||||||
None,
|
|
||||||
Before,
|
|
||||||
After,
|
|
||||||
FirstLine,
|
|
||||||
FirstLetter,
|
|
||||||
};
|
|
||||||
PseudoElement pseudo_element { PseudoElement::None };
|
PseudoElement pseudo_element { PseudoElement::None };
|
||||||
|
|
||||||
FlyString value {};
|
FlyString value {};
|
||||||
|
@ -142,7 +142,7 @@ private:
|
||||||
mutable Optional<u32> m_specificity;
|
mutable Optional<u32> m_specificity;
|
||||||
};
|
};
|
||||||
|
|
||||||
constexpr StringView pseudo_element_name(Selector::SimpleSelector::PseudoElement);
|
constexpr StringView pseudo_element_name(Selector::PseudoElement);
|
||||||
constexpr StringView pseudo_class_name(Selector::SimpleSelector::PseudoClass::Type);
|
constexpr StringView pseudo_class_name(Selector::SimpleSelector::PseudoClass::Type);
|
||||||
|
|
||||||
String serialize_a_group_of_selectors(NonnullRefPtrVector<Selector> const& selectors);
|
String serialize_a_group_of_selectors(NonnullRefPtrVector<Selector> const& selectors);
|
||||||
|
|
|
@ -438,19 +438,19 @@ void dump_selector(StringBuilder& builder, CSS::Selector const& selector)
|
||||||
if (simple_selector.type == CSS::Selector::SimpleSelector::Type::PseudoElement) {
|
if (simple_selector.type == CSS::Selector::SimpleSelector::Type::PseudoElement) {
|
||||||
char const* pseudo_element_description = "";
|
char const* pseudo_element_description = "";
|
||||||
switch (simple_selector.pseudo_element) {
|
switch (simple_selector.pseudo_element) {
|
||||||
case CSS::Selector::SimpleSelector::PseudoElement::None:
|
case CSS::Selector::PseudoElement::None:
|
||||||
pseudo_element_description = "NONE";
|
pseudo_element_description = "NONE";
|
||||||
break;
|
break;
|
||||||
case CSS::Selector::SimpleSelector::PseudoElement::Before:
|
case CSS::Selector::PseudoElement::Before:
|
||||||
pseudo_element_description = "before";
|
pseudo_element_description = "before";
|
||||||
break;
|
break;
|
||||||
case CSS::Selector::SimpleSelector::PseudoElement::After:
|
case CSS::Selector::PseudoElement::After:
|
||||||
pseudo_element_description = "after";
|
pseudo_element_description = "after";
|
||||||
break;
|
break;
|
||||||
case CSS::Selector::SimpleSelector::PseudoElement::FirstLine:
|
case CSS::Selector::PseudoElement::FirstLine:
|
||||||
pseudo_element_description = "first-line";
|
pseudo_element_description = "first-line";
|
||||||
break;
|
break;
|
||||||
case CSS::Selector::SimpleSelector::PseudoElement::FirstLetter:
|
case CSS::Selector::PseudoElement::FirstLetter:
|
||||||
pseudo_element_description = "first-letter";
|
pseudo_element_description = "first-letter";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue