From c50661067d08d0b54abb90c3fb708dd1ba161904 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Wed, 13 Apr 2022 20:15:20 +0100 Subject: [PATCH] LibWeb: Generate and use to_string(css_enum) functions The only one that's actually used is for Repeat, but it's easy to generate them so might as well. :^) --- .../LibWeb/GenerateCSSEnums.cpp | 26 +++++++++++++++++++ Userland/Libraries/LibWeb/CSS/StyleValue.h | 16 ------------ 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEnums.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEnums.cpp index 137a447a98..a9d6aa06aa 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEnums.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEnums.cpp @@ -77,6 +77,7 @@ enum class ValueID; enum_generator.appendln("};"); enum_generator.appendln("Optional<@name:titlecase@> value_id_to_@name:snakecase@(ValueID);"); enum_generator.appendln("ValueID to_value_id(@name:titlecase@);"); + enum_generator.appendln("StringView to_string(@name:titlecase@);"); enum_generator.append("\n"); }); @@ -156,6 +157,31 @@ ValueID to_value_id(@name:titlecase@ @name:snakecase@_value) VERIFY_NOT_REACHED(); } } +)~~~"); + + enum_generator.append(R"~~~( +StringView to_string(@name:titlecase@ value) +{ + switch (value) {)~~~"); + + for (auto& member : members.values()) { + auto member_generator = enum_generator.fork(); + auto member_name = member.to_string(); + if (member_name.contains('=')) + continue; + member_generator.set("member:css", member_name); + member_generator.set("member:titlecase", title_casify(member_name)); + + member_generator.append(R"~~~( + case @name:titlecase@::@member:titlecase@: + return "@member:css@"sv;)~~~"); + } + + enum_generator.append(R"~~~( + default: + VERIFY_NOT_REACHED(); + } +} )~~~"); }); diff --git a/Userland/Libraries/LibWeb/CSS/StyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValue.h index c522b04ce4..3d53927150 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValue.h @@ -72,22 +72,6 @@ inline Gfx::Painter::ScalingMode to_gfx_scaling_mode(CSS::ImageRendering css_val VERIFY_NOT_REACHED(); } -constexpr StringView to_string(Repeat value) -{ - switch (value) { - case Repeat::NoRepeat: - return "no-repeat"sv; - case Repeat::Repeat: - return "repeat"sv; - case Repeat::Round: - return "round"sv; - case Repeat::Space: - return "space"sv; - default: - VERIFY_NOT_REACHED(); - } -} - enum class TransformFunction { Matrix, Translate,