LibWeb: Move pseudo-element-from-string code into Selector

This commit is contained in:
Sam Atkins 2022-03-03 14:22:50 +00:00 committed by Andreas Kling
parent adc08d0646
commit 1c18bb13a2
Notes: sideshowbarker 2024-07-17 17:37:43 +09:00
3 changed files with 21 additions and 11 deletions

View file

@ -496,20 +496,12 @@ Result<Selector::SimpleSelector, Parser::ParsingResult> Parser::parse_simple_sel
if (has_ignored_vendor_prefix(pseudo_name))
return ParsingResult::IncludesIgnoredVendorPrefix;
if (pseudo_name.equals_ignoring_case("after")) {
simple_selector.pseudo_element = Selector::PseudoElement::After;
} else if (pseudo_name.equals_ignoring_case("before")) {
simple_selector.pseudo_element = Selector::PseudoElement::Before;
} else if (pseudo_name.equals_ignoring_case("first-letter")) {
simple_selector.pseudo_element = Selector::PseudoElement::FirstLetter;
} else if (pseudo_name.equals_ignoring_case("first-line")) {
simple_selector.pseudo_element = Selector::PseudoElement::FirstLine;
} else if (pseudo_name.equals_ignoring_case("marker")) {
simple_selector.pseudo_element = Selector::PseudoElement::Marker;
} else {
auto pseudo_element = pseudo_element_from_string(pseudo_name);
if (!pseudo_element.has_value()) {
dbgln_if(CSS_PARSER_DEBUG, "Unrecognized pseudo-element: '::{}'", pseudo_name);
return ParsingResult::SyntaxError;
}
simple_selector.pseudo_element = pseudo_element.value();
return simple_selector;
}

View file

@ -261,4 +261,20 @@ String serialize_a_group_of_selectors(NonnullRefPtrVector<Selector> const& selec
return builder.to_string();
}
Optional<Selector::PseudoElement> pseudo_element_from_string(StringView name)
{
if (name.equals_ignoring_case("after")) {
return Selector::PseudoElement::After;
} else if (name.equals_ignoring_case("before")) {
return Selector::PseudoElement::Before;
} else if (name.equals_ignoring_case("first-letter")) {
return Selector::PseudoElement::FirstLetter;
} else if (name.equals_ignoring_case("first-line")) {
return Selector::PseudoElement::FirstLine;
} else if (name.equals_ignoring_case("marker")) {
return Selector::PseudoElement::Marker;
}
return {};
}
}

View file

@ -165,6 +165,8 @@ constexpr StringView pseudo_element_name(Selector::PseudoElement pseudo_element)
VERIFY_NOT_REACHED();
}
Optional<Selector::PseudoElement> pseudo_element_from_string(StringView);
constexpr StringView pseudo_class_name(Selector::SimpleSelector::PseudoClass::Type pseudo_class)
{
switch (pseudo_class) {