Skip to content

Commit adc08d0

Browse files
AtkinsSJawesomekling
authored andcommitted
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.
1 parent eb6e4e6 commit adc08d0

File tree

2 files changed

+70
-72
lines changed

2 files changed

+70
-72
lines changed

Userland/Libraries/LibWeb/CSS/Selector.cpp

Lines changed: 0 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -261,74 +261,4 @@ String serialize_a_group_of_selectors(NonnullRefPtrVector<Selector> const& selec
261261
return builder.to_string();
262262
}
263263

264-
constexpr StringView pseudo_element_name(Selector::PseudoElement pseudo_element)
265-
{
266-
switch (pseudo_element) {
267-
case Selector::PseudoElement::Before:
268-
return "before"sv;
269-
case Selector::PseudoElement::After:
270-
return "after"sv;
271-
case Selector::PseudoElement::FirstLine:
272-
return "first-line"sv;
273-
case Selector::PseudoElement::FirstLetter:
274-
return "first-letter"sv;
275-
case Selector::PseudoElement::Marker:
276-
return "marker"sv;
277-
case Selector::PseudoElement::None:
278-
break;
279-
}
280-
VERIFY_NOT_REACHED();
281-
}
282-
283-
constexpr StringView pseudo_class_name(Selector::SimpleSelector::PseudoClass::Type pseudo_class)
284-
{
285-
switch (pseudo_class) {
286-
case Selector::SimpleSelector::PseudoClass::Type::Link:
287-
return "link"sv;
288-
case Selector::SimpleSelector::PseudoClass::Type::Visited:
289-
return "visited"sv;
290-
case Selector::SimpleSelector::PseudoClass::Type::Hover:
291-
return "hover"sv;
292-
case Selector::SimpleSelector::PseudoClass::Type::Focus:
293-
return "focus"sv;
294-
case Selector::SimpleSelector::PseudoClass::Type::FirstChild:
295-
return "first-child"sv;
296-
case Selector::SimpleSelector::PseudoClass::Type::LastChild:
297-
return "last-child"sv;
298-
case Selector::SimpleSelector::PseudoClass::Type::OnlyChild:
299-
return "only-child"sv;
300-
case Selector::SimpleSelector::PseudoClass::Type::Empty:
301-
return "empty"sv;
302-
case Selector::SimpleSelector::PseudoClass::Type::Root:
303-
return "root"sv;
304-
case Selector::SimpleSelector::PseudoClass::Type::FirstOfType:
305-
return "first-of-type"sv;
306-
case Selector::SimpleSelector::PseudoClass::Type::LastOfType:
307-
return "last-of-type"sv;
308-
case Selector::SimpleSelector::PseudoClass::Type::OnlyOfType:
309-
return "only-of-type"sv;
310-
case Selector::SimpleSelector::PseudoClass::Type::NthOfType:
311-
return "nth-of-type"sv;
312-
case Selector::SimpleSelector::PseudoClass::Type::NthLastOfType:
313-
return "nth-last-of-type"sv;
314-
case Selector::SimpleSelector::PseudoClass::Type::Disabled:
315-
return "disabled"sv;
316-
case Selector::SimpleSelector::PseudoClass::Type::Enabled:
317-
return "enabled"sv;
318-
case Selector::SimpleSelector::PseudoClass::Type::Checked:
319-
return "checked"sv;
320-
case Selector::SimpleSelector::PseudoClass::Type::Active:
321-
return "active"sv;
322-
case Selector::SimpleSelector::PseudoClass::Type::NthChild:
323-
return "nth-child"sv;
324-
case Selector::SimpleSelector::PseudoClass::Type::NthLastChild:
325-
return "nth-last-child"sv;
326-
case Selector::SimpleSelector::PseudoClass::Type::Not:
327-
return "not"sv;
328-
case Selector::SimpleSelector::PseudoClass::Type::None:
329-
break;
330-
}
331-
VERIFY_NOT_REACHED();
332-
}
333-
334264
}

Userland/Libraries/LibWeb/CSS/Selector.h

Lines changed: 70 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class Selector : public RefCounted<Selector> {
2828
FirstLetter,
2929
Marker,
3030
};
31+
static auto constexpr PseudoElementCount = to_underlying(PseudoElement::Marker) + 1;
3132

3233
struct SimpleSelector {
3334
enum class Type {
@@ -145,8 +146,75 @@ class Selector : public RefCounted<Selector> {
145146
mutable Optional<u32> m_specificity;
146147
};
147148

148-
constexpr StringView pseudo_element_name(Selector::PseudoElement);
149-
constexpr StringView pseudo_class_name(Selector::SimpleSelector::PseudoClass::Type);
149+
constexpr StringView pseudo_element_name(Selector::PseudoElement pseudo_element)
150+
{
151+
switch (pseudo_element) {
152+
case Selector::PseudoElement::Before:
153+
return "before"sv;
154+
case Selector::PseudoElement::After:
155+
return "after"sv;
156+
case Selector::PseudoElement::FirstLine:
157+
return "first-line"sv;
158+
case Selector::PseudoElement::FirstLetter:
159+
return "first-letter"sv;
160+
case Selector::PseudoElement::Marker:
161+
return "marker"sv;
162+
case Selector::PseudoElement::None:
163+
break;
164+
}
165+
VERIFY_NOT_REACHED();
166+
}
167+
168+
constexpr StringView pseudo_class_name(Selector::SimpleSelector::PseudoClass::Type pseudo_class)
169+
{
170+
switch (pseudo_class) {
171+
case Selector::SimpleSelector::PseudoClass::Type::Link:
172+
return "link"sv;
173+
case Selector::SimpleSelector::PseudoClass::Type::Visited:
174+
return "visited"sv;
175+
case Selector::SimpleSelector::PseudoClass::Type::Hover:
176+
return "hover"sv;
177+
case Selector::SimpleSelector::PseudoClass::Type::Focus:
178+
return "focus"sv;
179+
case Selector::SimpleSelector::PseudoClass::Type::FirstChild:
180+
return "first-child"sv;
181+
case Selector::SimpleSelector::PseudoClass::Type::LastChild:
182+
return "last-child"sv;
183+
case Selector::SimpleSelector::PseudoClass::Type::OnlyChild:
184+
return "only-child"sv;
185+
case Selector::SimpleSelector::PseudoClass::Type::Empty:
186+
return "empty"sv;
187+
case Selector::SimpleSelector::PseudoClass::Type::Root:
188+
return "root"sv;
189+
case Selector::SimpleSelector::PseudoClass::Type::FirstOfType:
190+
return "first-of-type"sv;
191+
case Selector::SimpleSelector::PseudoClass::Type::LastOfType:
192+
return "last-of-type"sv;
193+
case Selector::SimpleSelector::PseudoClass::Type::OnlyOfType:
194+
return "only-of-type"sv;
195+
case Selector::SimpleSelector::PseudoClass::Type::NthOfType:
196+
return "nth-of-type"sv;
197+
case Selector::SimpleSelector::PseudoClass::Type::NthLastOfType:
198+
return "nth-last-of-type"sv;
199+
case Selector::SimpleSelector::PseudoClass::Type::Disabled:
200+
return "disabled"sv;
201+
case Selector::SimpleSelector::PseudoClass::Type::Enabled:
202+
return "enabled"sv;
203+
case Selector::SimpleSelector::PseudoClass::Type::Checked:
204+
return "checked"sv;
205+
case Selector::SimpleSelector::PseudoClass::Type::Active:
206+
return "active"sv;
207+
case Selector::SimpleSelector::PseudoClass::Type::NthChild:
208+
return "nth-child"sv;
209+
case Selector::SimpleSelector::PseudoClass::Type::NthLastChild:
210+
return "nth-last-child"sv;
211+
case Selector::SimpleSelector::PseudoClass::Type::Not:
212+
return "not"sv;
213+
case Selector::SimpleSelector::PseudoClass::Type::None:
214+
break;
215+
}
216+
VERIFY_NOT_REACHED();
217+
}
150218

151219
String serialize_a_group_of_selectors(NonnullRefPtrVector<Selector> const& selectors);
152220

0 commit comments

Comments
 (0)