浏览代码

LibWeb: Move pseudo-class/element names into the header

These are constexpr, meaning that while the implementations were in the
cpp file, nobody outside that file could actually call them.
Sam Atkins 3 年之前
父节点
当前提交
adc08d0646
共有 2 个文件被更改,包括 70 次插入72 次删除
  1. 0 70
      Userland/Libraries/LibWeb/CSS/Selector.cpp
  2. 70 2
      Userland/Libraries/LibWeb/CSS/Selector.h

+ 0 - 70
Userland/Libraries/LibWeb/CSS/Selector.cpp

@@ -261,74 +261,4 @@ String serialize_a_group_of_selectors(NonnullRefPtrVector<Selector> const& selec
     return builder.to_string();
 }
 
-constexpr StringView pseudo_element_name(Selector::PseudoElement pseudo_element)
-{
-    switch (pseudo_element) {
-    case Selector::PseudoElement::Before:
-        return "before"sv;
-    case Selector::PseudoElement::After:
-        return "after"sv;
-    case Selector::PseudoElement::FirstLine:
-        return "first-line"sv;
-    case Selector::PseudoElement::FirstLetter:
-        return "first-letter"sv;
-    case Selector::PseudoElement::Marker:
-        return "marker"sv;
-    case Selector::PseudoElement::None:
-        break;
-    }
-    VERIFY_NOT_REACHED();
-}
-
-constexpr StringView pseudo_class_name(Selector::SimpleSelector::PseudoClass::Type pseudo_class)
-{
-    switch (pseudo_class) {
-    case Selector::SimpleSelector::PseudoClass::Type::Link:
-        return "link"sv;
-    case Selector::SimpleSelector::PseudoClass::Type::Visited:
-        return "visited"sv;
-    case Selector::SimpleSelector::PseudoClass::Type::Hover:
-        return "hover"sv;
-    case Selector::SimpleSelector::PseudoClass::Type::Focus:
-        return "focus"sv;
-    case Selector::SimpleSelector::PseudoClass::Type::FirstChild:
-        return "first-child"sv;
-    case Selector::SimpleSelector::PseudoClass::Type::LastChild:
-        return "last-child"sv;
-    case Selector::SimpleSelector::PseudoClass::Type::OnlyChild:
-        return "only-child"sv;
-    case Selector::SimpleSelector::PseudoClass::Type::Empty:
-        return "empty"sv;
-    case Selector::SimpleSelector::PseudoClass::Type::Root:
-        return "root"sv;
-    case Selector::SimpleSelector::PseudoClass::Type::FirstOfType:
-        return "first-of-type"sv;
-    case Selector::SimpleSelector::PseudoClass::Type::LastOfType:
-        return "last-of-type"sv;
-    case Selector::SimpleSelector::PseudoClass::Type::OnlyOfType:
-        return "only-of-type"sv;
-    case Selector::SimpleSelector::PseudoClass::Type::NthOfType:
-        return "nth-of-type"sv;
-    case Selector::SimpleSelector::PseudoClass::Type::NthLastOfType:
-        return "nth-last-of-type"sv;
-    case Selector::SimpleSelector::PseudoClass::Type::Disabled:
-        return "disabled"sv;
-    case Selector::SimpleSelector::PseudoClass::Type::Enabled:
-        return "enabled"sv;
-    case Selector::SimpleSelector::PseudoClass::Type::Checked:
-        return "checked"sv;
-    case Selector::SimpleSelector::PseudoClass::Type::Active:
-        return "active"sv;
-    case Selector::SimpleSelector::PseudoClass::Type::NthChild:
-        return "nth-child"sv;
-    case Selector::SimpleSelector::PseudoClass::Type::NthLastChild:
-        return "nth-last-child"sv;
-    case Selector::SimpleSelector::PseudoClass::Type::Not:
-        return "not"sv;
-    case Selector::SimpleSelector::PseudoClass::Type::None:
-        break;
-    }
-    VERIFY_NOT_REACHED();
-}
-
 }

+ 70 - 2
Userland/Libraries/LibWeb/CSS/Selector.h

@@ -28,6 +28,7 @@ public:
         FirstLetter,
         Marker,
     };
+    static auto constexpr PseudoElementCount = to_underlying(PseudoElement::Marker) + 1;
 
     struct SimpleSelector {
         enum class Type {
@@ -145,8 +146,75 @@ private:
     mutable Optional<u32> m_specificity;
 };
 
-constexpr StringView pseudo_element_name(Selector::PseudoElement);
-constexpr StringView pseudo_class_name(Selector::SimpleSelector::PseudoClass::Type);
+constexpr StringView pseudo_element_name(Selector::PseudoElement pseudo_element)
+{
+    switch (pseudo_element) {
+    case Selector::PseudoElement::Before:
+        return "before"sv;
+    case Selector::PseudoElement::After:
+        return "after"sv;
+    case Selector::PseudoElement::FirstLine:
+        return "first-line"sv;
+    case Selector::PseudoElement::FirstLetter:
+        return "first-letter"sv;
+    case Selector::PseudoElement::Marker:
+        return "marker"sv;
+    case Selector::PseudoElement::None:
+        break;
+    }
+    VERIFY_NOT_REACHED();
+}
+
+constexpr StringView pseudo_class_name(Selector::SimpleSelector::PseudoClass::Type pseudo_class)
+{
+    switch (pseudo_class) {
+    case Selector::SimpleSelector::PseudoClass::Type::Link:
+        return "link"sv;
+    case Selector::SimpleSelector::PseudoClass::Type::Visited:
+        return "visited"sv;
+    case Selector::SimpleSelector::PseudoClass::Type::Hover:
+        return "hover"sv;
+    case Selector::SimpleSelector::PseudoClass::Type::Focus:
+        return "focus"sv;
+    case Selector::SimpleSelector::PseudoClass::Type::FirstChild:
+        return "first-child"sv;
+    case Selector::SimpleSelector::PseudoClass::Type::LastChild:
+        return "last-child"sv;
+    case Selector::SimpleSelector::PseudoClass::Type::OnlyChild:
+        return "only-child"sv;
+    case Selector::SimpleSelector::PseudoClass::Type::Empty:
+        return "empty"sv;
+    case Selector::SimpleSelector::PseudoClass::Type::Root:
+        return "root"sv;
+    case Selector::SimpleSelector::PseudoClass::Type::FirstOfType:
+        return "first-of-type"sv;
+    case Selector::SimpleSelector::PseudoClass::Type::LastOfType:
+        return "last-of-type"sv;
+    case Selector::SimpleSelector::PseudoClass::Type::OnlyOfType:
+        return "only-of-type"sv;
+    case Selector::SimpleSelector::PseudoClass::Type::NthOfType:
+        return "nth-of-type"sv;
+    case Selector::SimpleSelector::PseudoClass::Type::NthLastOfType:
+        return "nth-last-of-type"sv;
+    case Selector::SimpleSelector::PseudoClass::Type::Disabled:
+        return "disabled"sv;
+    case Selector::SimpleSelector::PseudoClass::Type::Enabled:
+        return "enabled"sv;
+    case Selector::SimpleSelector::PseudoClass::Type::Checked:
+        return "checked"sv;
+    case Selector::SimpleSelector::PseudoClass::Type::Active:
+        return "active"sv;
+    case Selector::SimpleSelector::PseudoClass::Type::NthChild:
+        return "nth-child"sv;
+    case Selector::SimpleSelector::PseudoClass::Type::NthLastChild:
+        return "nth-last-child"sv;
+    case Selector::SimpleSelector::PseudoClass::Type::Not:
+        return "not"sv;
+    case Selector::SimpleSelector::PseudoClass::Type::None:
+        break;
+    }
+    VERIFY_NOT_REACHED();
+}
 
 String serialize_a_group_of_selectors(NonnullRefPtrVector<Selector> const& selectors);