diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEnums.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEnums.cpp index 997aa5c67b..cbcdeee7d1 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEnums.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEnums.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Sam Atkins + * Copyright (c) 2022-2023, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ @@ -43,7 +43,7 @@ ErrorOr generate_header_file(JsonObject& enums_data, Core::File& file) StringBuilder builder; SourceGenerator generator { builder }; - generator.append(R"~~~( + TRY(generator.try_append(R"~~~( #pragma once #include @@ -52,7 +52,7 @@ namespace Web::CSS { enum class ValueID; -)~~~"); +)~~~")); TRY(enums_data.try_for_each_member([&](auto& name, auto& value) -> ErrorOr { VERIFY(value.is_array()); @@ -65,16 +65,16 @@ enum class ValueID; // Find the smallest possible type to use. auto member_max_value = members.size() - 1; if (NumericLimits::max() >= member_max_value) { - enum_generator.set("enum_type", "u8"); + TRY(enum_generator.set("enum_type", "u8"_short_string)); } else if (NumericLimits::max() >= member_max_value) { - enum_generator.set("enum_type", "u16"); + TRY(enum_generator.set("enum_type", "u16"_short_string)); } else if (NumericLimits::max() >= member_max_value) { - enum_generator.set("enum_type", "u32"); + TRY(enum_generator.set("enum_type", "u32"_short_string)); } else { - enum_generator.set("enum_type", "u64"); + TRY(enum_generator.set("enum_type", "u64"_short_string)); } - enum_generator.appendln("enum class @name:titlecase@ : @enum_type@ {"); + TRY(enum_generator.try_appendln("enum class @name:titlecase@ : @enum_type@ {")); for (auto& member : members.values()) { auto member_name = member.to_deprecated_string(); @@ -83,19 +83,18 @@ enum class ValueID; continue; auto member_generator = TRY(enum_generator.fork()); TRY(member_generator.set("member:titlecase", TRY(title_casify(member_name)))); - member_generator.appendln(" @member:titlecase@,"); + TRY(member_generator.try_appendln(" @member:titlecase@,")); } - 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"); - + TRY(enum_generator.try_appendln("};")); + TRY(enum_generator.try_appendln("Optional<@name:titlecase@> value_id_to_@name:snakecase@(ValueID);")); + TRY(enum_generator.try_appendln("ValueID to_value_id(@name:titlecase@);")); + TRY(enum_generator.try_appendln("StringView to_string(@name:titlecase@);")); + TRY(enum_generator.try_append("\n")); return {}; })); - generator.appendln("}"); + TRY(generator.try_appendln("}")); TRY(file.write_until_depleted(generator.as_string_view().bytes())); return {}; @@ -106,12 +105,12 @@ ErrorOr generate_implementation_file(JsonObject& enums_data, Core::File& f StringBuilder builder; SourceGenerator generator { builder }; - generator.append(R"~~~( + TRY(generator.try_append(R"~~~( #include #include namespace Web::CSS { -)~~~"); +)~~~")); TRY(enums_data.try_for_each_member([&](auto& name, auto& value) -> ErrorOr { VERIFY(value.is_array()); @@ -121,10 +120,10 @@ namespace Web::CSS { TRY(enum_generator.set("name:titlecase", TRY(title_casify(name)))); TRY(enum_generator.set("name:snakecase", TRY(snake_casify(name)))); - enum_generator.append(R"~~~( + TRY(enum_generator.try_append(R"~~~( Optional<@name:titlecase@> value_id_to_@name:snakecase@(ValueID value_id) { - switch (value_id) {)~~~"); + switch (value_id) {)~~~")); for (auto& member : members.values()) { auto member_generator = TRY(enum_generator.fork()); @@ -137,22 +136,22 @@ Optional<@name:titlecase@> value_id_to_@name:snakecase@(ValueID value_id) TRY(member_generator.set("valueid:titlecase", TRY(title_casify(member_name)))); TRY(member_generator.set("member:titlecase", TRY(title_casify(member_name)))); } - member_generator.append(R"~~~( + TRY(member_generator.try_append(R"~~~( case ValueID::@valueid:titlecase@: - return @name:titlecase@::@member:titlecase@;)~~~"); + return @name:titlecase@::@member:titlecase@;)~~~")); } - enum_generator.append(R"~~~( + TRY(enum_generator.try_append(R"~~~( default: return {}; } } -)~~~"); +)~~~")); - enum_generator.append(R"~~~( + TRY(enum_generator.try_append(R"~~~( ValueID to_value_id(@name:titlecase@ @name:snakecase@_value) { - switch (@name:snakecase@_value) {)~~~"); + switch (@name:snakecase@_value) {)~~~")); for (auto& member : members.values()) { auto member_generator = TRY(enum_generator.fork()); @@ -161,46 +160,46 @@ ValueID to_value_id(@name:titlecase@ @name:snakecase@_value) continue; TRY(member_generator.set("member:titlecase", TRY(title_casify(member_name)))); - member_generator.append(R"~~~( + TRY(member_generator.try_append(R"~~~( case @name:titlecase@::@member:titlecase@: - return ValueID::@member:titlecase@;)~~~"); + return ValueID::@member:titlecase@;)~~~")); } - enum_generator.append(R"~~~( + TRY(enum_generator.try_append(R"~~~( default: VERIFY_NOT_REACHED(); } } -)~~~"); +)~~~")); - enum_generator.append(R"~~~( + TRY(enum_generator.try_append(R"~~~( StringView to_string(@name:titlecase@ value) { - switch (value) {)~~~"); + switch (value) {)~~~")); for (auto& member : members.values()) { auto member_generator = TRY(enum_generator.fork()); auto member_name = member.to_deprecated_string(); if (member_name.contains('=')) continue; - member_generator.set("member:css", member_name); + TRY(member_generator.set("member:css", TRY(String::from_deprecated_string(member_name)))); TRY(member_generator.set("member:titlecase", TRY(title_casify(member_name)))); - member_generator.append(R"~~~( + TRY(member_generator.try_append(R"~~~( case @name:titlecase@::@member:titlecase@: - return "@member:css@"sv;)~~~"); + return "@member:css@"sv;)~~~")); } - enum_generator.append(R"~~~( + TRY(enum_generator.try_append(R"~~~( default: VERIFY_NOT_REACHED(); } } -)~~~"); +)~~~")); return {}; })); - generator.appendln("}"); + TRY(generator.try_appendln("}")); TRY(file.write_until_depleted(generator.as_string_view().bytes())); return {};