LibWeb: Use PseudoClassMetadata to simplify serialization

This commit is contained in:
Sam Atkins 2023-08-12 13:57:18 +01:00 committed by Andreas Kling
parent b684bab5f1
commit a31a0934b8
Notes: sideshowbarker 2024-07-17 03:05:16 +09:00

View File

@ -228,51 +228,16 @@ ErrorOr<String> Selector::SimpleSelector::serialize() const
case Selector::SimpleSelector::Type::PseudoClass: {
auto& pseudo_class = this->pseudo_class();
switch (pseudo_class.type) {
case PseudoClass::Link:
case PseudoClass::Visited:
case PseudoClass::Hover:
case PseudoClass::Focus:
case PseudoClass::FocusVisible:
case PseudoClass::FocusWithin:
case PseudoClass::FirstChild:
case PseudoClass::LastChild:
case PseudoClass::OnlyChild:
case PseudoClass::Empty:
case PseudoClass::Root:
case PseudoClass::Host:
case PseudoClass::FirstOfType:
case PseudoClass::LastOfType:
case PseudoClass::OnlyOfType:
case PseudoClass::Disabled:
case PseudoClass::Enabled:
case PseudoClass::Checked:
case PseudoClass::Indeterminate:
case PseudoClass::Active:
case PseudoClass::Scope:
case PseudoClass::Defined:
case PseudoClass::Playing:
case PseudoClass::Paused:
case PseudoClass::Seeking:
case PseudoClass::Muted:
case PseudoClass::VolumeLocked:
case PseudoClass::Buffering:
case PseudoClass::Stalled:
case PseudoClass::Target:
// If the pseudo-class does not accept arguments append ":" (U+003A), followed by the name of the pseudo-class, to s.
auto metadata = pseudo_class_metadata(pseudo_class.type);
// If the pseudo-class does not accept arguments append ":" (U+003A), followed by the name of the pseudo-class, to s.
if (metadata.is_valid_as_identifier) {
TRY(s.try_append(':'));
TRY(s.try_append(pseudo_class_name(pseudo_class.type)));
break;
case PseudoClass::NthChild:
case PseudoClass::NthLastChild:
case PseudoClass::NthOfType:
case PseudoClass::NthLastOfType:
case PseudoClass::Not:
case PseudoClass::Is:
case PseudoClass::Where:
case PseudoClass::Lang:
// Otherwise, append ":" (U+003A), followed by the name of the pseudo-class, followed by "(" (U+0028),
// followed by the value of the pseudo-class argument(s) determined as per below, followed by ")" (U+0029), to s.
}
// Otherwise, append ":" (U+003A), followed by the name of the pseudo-class, followed by "(" (U+0028),
// followed by the value of the pseudo-class argument(s) determined as per below, followed by ")" (U+0029), to s.
else {
TRY(s.try_append(':'));
TRY(s.try_append(pseudo_class_name(pseudo_class.type)));
TRY(s.try_append('('));
@ -293,7 +258,6 @@ ErrorOr<String> Selector::SimpleSelector::serialize() const
s.join(", "sv, pseudo_class.languages);
}
TRY(s.try_append(')'));
break;
}
break;
}