Quellcode durchsuchen

LibWeb: Deduplicate "ident is color" check

Reuse the check from IdentifierStyleValue in the CSS Parser, instead of
duplicating it. This might not be the ideal place to put it, but it
works for now.
Sam Atkins vor 1 Jahr
Ursprung
Commit
1dcd63be05

+ 3 - 63
Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp

@@ -2478,69 +2478,9 @@ RefPtr<StyleValue> Parser::parse_color_value(ComponentValue const& component_val
         return ColorStyleValue::create(color.value());
         return ColorStyleValue::create(color.value());
 
 
     if (component_value.is(Token::Type::Ident)) {
     if (component_value.is(Token::Type::Ident)) {
-        if (auto ident = value_id_from_string(component_value.token().ident()); ident.has_value()) {
-            switch (ident.value()) {
-            case ValueID::Currentcolor:
-            case ValueID::LibwebLink:
-            case ValueID::LibwebPaletteActiveLink:
-            case ValueID::LibwebPaletteActiveWindowBorder1:
-            case ValueID::LibwebPaletteActiveWindowBorder2:
-            case ValueID::LibwebPaletteActiveWindowTitle:
-            case ValueID::LibwebPaletteBase:
-            case ValueID::LibwebPaletteBaseText:
-            case ValueID::LibwebPaletteButton:
-            case ValueID::LibwebPaletteButtonText:
-            case ValueID::LibwebPaletteDesktopBackground:
-            case ValueID::LibwebPaletteFocusOutline:
-            case ValueID::LibwebPaletteHighlightWindowBorder1:
-            case ValueID::LibwebPaletteHighlightWindowBorder2:
-            case ValueID::LibwebPaletteHighlightWindowTitle:
-            case ValueID::LibwebPaletteHoverHighlight:
-            case ValueID::LibwebPaletteInactiveSelection:
-            case ValueID::LibwebPaletteInactiveSelectionText:
-            case ValueID::LibwebPaletteInactiveWindowBorder1:
-            case ValueID::LibwebPaletteInactiveWindowBorder2:
-            case ValueID::LibwebPaletteInactiveWindowTitle:
-            case ValueID::LibwebPaletteLink:
-            case ValueID::LibwebPaletteMenuBase:
-            case ValueID::LibwebPaletteMenuBaseText:
-            case ValueID::LibwebPaletteMenuSelection:
-            case ValueID::LibwebPaletteMenuSelectionText:
-            case ValueID::LibwebPaletteMenuStripe:
-            case ValueID::LibwebPaletteMovingWindowBorder1:
-            case ValueID::LibwebPaletteMovingWindowBorder2:
-            case ValueID::LibwebPaletteMovingWindowTitle:
-            case ValueID::LibwebPaletteRubberBandBorder:
-            case ValueID::LibwebPaletteRubberBandFill:
-            case ValueID::LibwebPaletteRuler:
-            case ValueID::LibwebPaletteRulerActiveText:
-            case ValueID::LibwebPaletteRulerBorder:
-            case ValueID::LibwebPaletteRulerInactiveText:
-            case ValueID::LibwebPaletteSelection:
-            case ValueID::LibwebPaletteSelectionText:
-            case ValueID::LibwebPaletteSyntaxComment:
-            case ValueID::LibwebPaletteSyntaxControlKeyword:
-            case ValueID::LibwebPaletteSyntaxIdentifier:
-            case ValueID::LibwebPaletteSyntaxKeyword:
-            case ValueID::LibwebPaletteSyntaxNumber:
-            case ValueID::LibwebPaletteSyntaxOperator:
-            case ValueID::LibwebPaletteSyntaxPreprocessorStatement:
-            case ValueID::LibwebPaletteSyntaxPreprocessorValue:
-            case ValueID::LibwebPaletteSyntaxPunctuation:
-            case ValueID::LibwebPaletteSyntaxString:
-            case ValueID::LibwebPaletteSyntaxType:
-            case ValueID::LibwebPaletteTextCursor:
-            case ValueID::LibwebPaletteThreedHighlight:
-            case ValueID::LibwebPaletteThreedShadow1:
-            case ValueID::LibwebPaletteThreedShadow2:
-            case ValueID::LibwebPaletteVisitedLink:
-            case ValueID::LibwebPaletteWindow:
-            case ValueID::LibwebPaletteWindowText:
-                return IdentifierStyleValue::create(ident.value());
-            default:
-                break;
-            }
-        }
+        auto ident = value_id_from_string(component_value.token().ident());
+        if (ident.has_value() && IdentifierStyleValue::is_color(ident.value()))
+            return IdentifierStyleValue::create(ident.value());
     }
     }
 
 
     return nullptr;
     return nullptr;

+ 7 - 2
Userland/Libraries/LibWeb/CSS/StyleValues/IdentifierStyleValue.cpp

@@ -19,9 +19,9 @@ String IdentifierStyleValue::to_string() const
     return MUST(String::from_utf8(CSS::string_from_value_id(m_id)));
     return MUST(String::from_utf8(CSS::string_from_value_id(m_id)));
 }
 }
 
 
-bool IdentifierStyleValue::has_color() const
+bool IdentifierStyleValue::is_color(ValueID value_id)
 {
 {
-    switch (m_id) {
+    switch (value_id) {
     case ValueID::Currentcolor:
     case ValueID::Currentcolor:
     case ValueID::LibwebLink:
     case ValueID::LibwebLink:
     case ValueID::LibwebPaletteActiveLink:
     case ValueID::LibwebPaletteActiveLink:
@@ -84,6 +84,11 @@ bool IdentifierStyleValue::has_color() const
     }
     }
 }
 }
 
 
+bool IdentifierStyleValue::has_color() const
+{
+    return is_color(m_id);
+}
+
 Color IdentifierStyleValue::to_color(Optional<Layout::NodeWithStyle const&> node) const
 Color IdentifierStyleValue::to_color(Optional<Layout::NodeWithStyle const&> node) const
 {
 {
     if (id() == CSS::ValueID::Currentcolor) {
     if (id() == CSS::ValueID::Currentcolor) {

+ 1 - 0
Userland/Libraries/LibWeb/CSS/StyleValues/IdentifierStyleValue.h

@@ -24,6 +24,7 @@ public:
 
 
     ValueID id() const { return m_id; }
     ValueID id() const { return m_id; }
 
 
+    static bool is_color(ValueID);
     virtual bool has_color() const override;
     virtual bool has_color() const override;
     virtual Color to_color(Optional<Layout::NodeWithStyle const&> node) const override;
     virtual Color to_color(Optional<Layout::NodeWithStyle const&> node) const override;
     virtual String to_string() const override;
     virtual String to_string() const override;