mirror of
https://github.com/RGBCube/serenity
synced 2025-06-30 10:22:13 +00:00
LibWeb: Move pseudo-element-from-string code into Selector
This commit is contained in:
parent
adc08d0646
commit
1c18bb13a2
3 changed files with 21 additions and 11 deletions
|
@ -496,20 +496,12 @@ Result<Selector::SimpleSelector, Parser::ParsingResult> Parser::parse_simple_sel
|
||||||
if (has_ignored_vendor_prefix(pseudo_name))
|
if (has_ignored_vendor_prefix(pseudo_name))
|
||||||
return ParsingResult::IncludesIgnoredVendorPrefix;
|
return ParsingResult::IncludesIgnoredVendorPrefix;
|
||||||
|
|
||||||
if (pseudo_name.equals_ignoring_case("after")) {
|
auto pseudo_element = pseudo_element_from_string(pseudo_name);
|
||||||
simple_selector.pseudo_element = Selector::PseudoElement::After;
|
if (!pseudo_element.has_value()) {
|
||||||
} 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 {
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
simple_selector.pseudo_element = pseudo_element.value();
|
||||||
|
|
||||||
return simple_selector;
|
return simple_selector;
|
||||||
}
|
}
|
||||||
|
|
|
@ -261,4 +261,20 @@ String serialize_a_group_of_selectors(NonnullRefPtrVector<Selector> const& selec
|
||||||
return builder.to_string();
|
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 {};
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -165,6 +165,8 @@ constexpr StringView pseudo_element_name(Selector::PseudoElement pseudo_element)
|
||||||
VERIFY_NOT_REACHED();
|
VERIFY_NOT_REACHED();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Optional<Selector::PseudoElement> pseudo_element_from_string(StringView);
|
||||||
|
|
||||||
constexpr StringView pseudo_class_name(Selector::SimpleSelector::PseudoClass::Type pseudo_class)
|
constexpr StringView pseudo_class_name(Selector::SimpleSelector::PseudoClass::Type pseudo_class)
|
||||||
{
|
{
|
||||||
switch (pseudo_class) {
|
switch (pseudo_class) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue