diff --git a/AK/SourceGenerator.h b/AK/SourceGenerator.h index 4974de596ef..d7d2978392a 100644 --- a/AK/SourceGenerator.h +++ b/AK/SourceGenerator.h @@ -65,12 +65,12 @@ public: StringView as_string_view() const { return m_builder.string_view(); } - ErrorOr try_append(StringView pattern) + void append(StringView pattern) { GenericLexer lexer { pattern }; while (!lexer.is_eof()) { - TRY(m_builder.try_append(lexer.consume_until(m_opening))); + m_builder.append(lexer.consume_until(m_opening)); if (lexer.consume_specific(m_opening)) { auto const placeholder = lexer.consume_until(m_closing); @@ -78,12 +78,11 @@ public: if (!lexer.consume_specific(m_closing)) VERIFY_NOT_REACHED(); - TRY(m_builder.try_append(get(placeholder))); + m_builder.append(get(placeholder)); } else { VERIFY(lexer.is_eof()); } } - return {}; } void appendln(StringView pattern) @@ -105,9 +104,9 @@ public: } template - ErrorOr try_append(char const (&pattern)[N]) + void append(char const (&pattern)[N]) { - return try_append(StringView { pattern, N - 1 }); + append(StringView { pattern, N - 1 }); } template @@ -126,9 +125,6 @@ public: { set(StringView { key, N - 1 }, value); } - void append(StringView pattern) { MUST(try_append(pattern)); } - template - void append(char const (&pattern)[N]) { MUST(try_append(pattern)); } private: StringBuilder& m_builder; diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEasingFunctions.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEasingFunctions.cpp index 51737ea4a1e..51381591ccb 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEasingFunctions.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEasingFunctions.cpp @@ -44,7 +44,7 @@ ErrorOr generate_header_file(JsonObject& easing_data, Core::File& file) StringBuilder builder; SourceGenerator generator { builder }; - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( #pragma once #include @@ -53,7 +53,7 @@ ErrorOr generate_header_file(JsonObject& easing_data, Core::File& file) namespace Web::CSS { -)~~~")); +)~~~"); generator.appendln("enum class EasingFunction {"); TRY(easing_data.try_for_each_member([&](auto& name, auto&) -> ErrorOr { @@ -67,7 +67,7 @@ namespace Web::CSS { generator.appendln("Optional easing_function_from_string(StringView);"); generator.appendln("StringView to_string(EasingFunction);"); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( enum class EasingFunctionParameterType { Integer, Number, @@ -84,7 +84,7 @@ struct EasingFunctionMetadata { Vector parameters; }; EasingFunctionMetadata easing_function_metadata(EasingFunction); -)~~~")); +)~~~"); generator.appendln("\n}"); @@ -97,68 +97,68 @@ ErrorOr generate_implementation_file(JsonObject& easing_data, Core::File& StringBuilder builder; SourceGenerator generator { builder }; - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( #include #include namespace Web::CSS { -)~~~")); +)~~~"); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( Optional easing_function_from_string(StringView name) { -)~~~")); +)~~~"); TRY(easing_data.try_for_each_member([&](auto& name, auto&) -> ErrorOr { auto member_generator = TRY(generator.fork()); member_generator.set("name", TRY(String::from_deprecated_string(name))); member_generator.set("name:titlecase", TRY(title_casify(name))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( if (name.equals_ignoring_ascii_case("@name@"sv)) return EasingFunction::@name:titlecase@; -)~~~")); +)~~~"); return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( return {}; } -)~~~")); +)~~~"); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( StringView to_string(EasingFunction easing_function) { switch (easing_function) { -)~~~")); +)~~~"); TRY(easing_data.try_for_each_member([&](auto& name, auto&) -> ErrorOr { auto member_generator = TRY(generator.fork()); member_generator.set("name", TRY(String::from_deprecated_string(name))); member_generator.set("name:titlecase", TRY(title_casify(name))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( case EasingFunction::@name:titlecase@: return "@name@"sv; -)~~~")); +)~~~"); return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( default: VERIFY_NOT_REACHED(); } } -)~~~")); +)~~~"); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( EasingFunctionMetadata easing_function_metadata(EasingFunction easing_function) { switch (easing_function) { -)~~~")); +)~~~"); TRY(easing_data.try_for_each_member([&](auto& name, auto& value) -> ErrorOr { VERIFY(value.is_object()); auto member_generator = TRY(generator.fork()); member_generator.set("name:titlecase", TRY(title_casify(name))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( case EasingFunction::@name:titlecase@: return EasingFunctionMetadata { - .parameters = {)~~~")); + .parameters = {)~~~"); if (auto parameters = value.as_object().get_array("parameters"sv); parameters.has_value()) { bool first = true; @@ -189,28 +189,28 @@ EasingFunctionMetadata easing_function_metadata(EasingFunction easing_function) else VERIFY_NOT_REACHED(); - TRY(member_generator.try_append(first ? " "sv : ", "sv)); + member_generator.append(first ? " "sv : ", "sv); first = false; - TRY(member_generator.try_append(TRY(String::formatted( + member_generator.append(TRY(String::formatted( "{{ EasingFunctionParameterType::{}, {} }}", parameter_type, - is_optional ? "true"sv : "false"sv)))); + is_optional ? "true"sv : "false"sv))); return {}; })); } - TRY(member_generator.try_append(R"~~~( } + member_generator.append(R"~~~( } }; -)~~~")); +)~~~"); return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( default: VERIFY_NOT_REACHED(); } } -)~~~")); +)~~~"); generator.appendln("\n}"); diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEnums.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEnums.cpp index d5fb90a5739..fa0d6dde974 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEnums.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEnums.cpp @@ -43,7 +43,7 @@ ErrorOr generate_header_file(JsonObject& enums_data, Core::File& file) StringBuilder builder; SourceGenerator generator { builder }; - TRY(generator.try_append(R"~~~( + generator.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()); @@ -90,7 +90,7 @@ enum class ValueID; 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@);"); - TRY(enum_generator.try_append("\n")); + enum_generator.append("\n"); return {}; })); @@ -105,12 +105,12 @@ ErrorOr generate_implementation_file(JsonObject& enums_data, Core::File& f StringBuilder builder; SourceGenerator generator { builder }; - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( #include #include namespace Web::CSS { -)~~~")); +)~~~"); TRY(enums_data.try_for_each_member([&](auto& name, auto& value) -> ErrorOr { VERIFY(value.is_array()); @@ -120,10 +120,10 @@ namespace Web::CSS { enum_generator.set("name:titlecase", TRY(title_casify(name))); enum_generator.set("name:snakecase", TRY(snake_casify(name))); - TRY(enum_generator.try_append(R"~~~( + enum_generator.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()); @@ -136,22 +136,22 @@ Optional<@name:titlecase@> value_id_to_@name:snakecase@(ValueID value_id) member_generator.set("valueid:titlecase", TRY(title_casify(member_name))); member_generator.set("member:titlecase", TRY(title_casify(member_name))); } - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( case ValueID::@valueid:titlecase@: - return @name:titlecase@::@member:titlecase@;)~~~")); + return @name:titlecase@::@member:titlecase@;)~~~"); } - TRY(enum_generator.try_append(R"~~~( + enum_generator.append(R"~~~( default: return {}; } } -)~~~")); +)~~~"); - TRY(enum_generator.try_append(R"~~~( + enum_generator.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()); @@ -160,22 +160,22 @@ ValueID to_value_id(@name:titlecase@ @name:snakecase@_value) continue; member_generator.set("member:titlecase", TRY(title_casify(member_name))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( case @name:titlecase@::@member:titlecase@: - return ValueID::@member:titlecase@;)~~~")); + return ValueID::@member:titlecase@;)~~~"); } - TRY(enum_generator.try_append(R"~~~( + enum_generator.append(R"~~~( default: VERIFY_NOT_REACHED(); } } -)~~~")); +)~~~"); - TRY(enum_generator.try_append(R"~~~( + enum_generator.append(R"~~~( StringView to_string(@name:titlecase@ value) { - switch (value) {)~~~")); + switch (value) {)~~~"); for (auto& member : members.values()) { auto member_generator = TRY(enum_generator.fork()); @@ -185,17 +185,17 @@ StringView to_string(@name:titlecase@ value) member_generator.set("member:css", TRY(String::from_deprecated_string(member_name))); member_generator.set("member:titlecase", TRY(title_casify(member_name))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( case @name:titlecase@::@member:titlecase@: - return "@member:css@"sv;)~~~")); + return "@member:css@"sv;)~~~"); } - TRY(enum_generator.try_append(R"~~~( + enum_generator.append(R"~~~( default: VERIFY_NOT_REACHED(); } } -)~~~")); +)~~~"); return {}; })); diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSMathFunctions.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSMathFunctions.cpp index 8d07f4b9cfc..3d9ac5646b6 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSMathFunctions.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSMathFunctions.cpp @@ -43,7 +43,7 @@ ErrorOr generate_header_file(JsonObject& functions_data, Core::File& file) StringBuilder builder; SourceGenerator generator { builder }; - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( // This file is generated by GenerateCSSMathFunctions.cpp #pragma once @@ -51,7 +51,7 @@ ErrorOr generate_header_file(JsonObject& functions_data, Core::File& file) namespace Web::CSS { enum class MathFunction { -)~~~")); +)~~~"); TRY(functions_data.try_for_each_member([&](auto& name, auto&) -> ErrorOr { auto member_generator = TRY(generator.fork()); @@ -60,11 +60,11 @@ enum class MathFunction { return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( }; } -)~~~")); +)~~~"); TRY(file.write_until_depleted(generator.as_string_view().bytes())); return {}; @@ -77,7 +77,7 @@ ErrorOr generate_calculation_type_check(StringView calculation_variable_ bool first_type_check = true; for (auto const& allowed_type_name : allowed_types) { if (!first_type_check) - TRY(builder.try_append(" || "sv)); + builder.append(" || "sv); first_type_check = false; if (allowed_type_name == ""sv) { @@ -111,7 +111,7 @@ ErrorOr generate_implementation_file(JsonObject& functions_data, Core::Fil StringBuilder builder; SourceGenerator generator { builder }; - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( // This file is generated by GenerateCSSMathFunctions.cpp #include @@ -148,7 +148,7 @@ OwnPtr Parser::parse_math_function(PropertyID property_id, Func { TokenStream stream { function.values() }; auto arguments = parse_a_comma_separated_list_of_component_values(stream); -)~~~")); +)~~~"); TRY(functions_data.try_for_each_member([&](auto& name, JsonValue const& value) -> ErrorOr { auto& function_data = value.as_object(); @@ -160,7 +160,7 @@ OwnPtr Parser::parse_math_function(PropertyID property_id, Func function_generator.appendln(" if (function.name().equals_ignoring_ascii_case(\"@name:lowercase@\"sv)) {"); if (function_data.get_bool("is-variadic"sv).value_or(false)) { // Variadic function - TRY(function_generator.try_append(R"~~~( + function_generator.append(R"~~~( CSSNumericType determined_argument_type; Vector> parsed_arguments; parsed_arguments.ensure_capacity(arguments.size()); @@ -179,13 +179,13 @@ OwnPtr Parser::parse_math_function(PropertyID property_id, Func } auto argument_type = maybe_argument_type.release_value(); -)~~~")); +)~~~"); // Generate some type checks VERIFY(parameters.size() == 1); auto& parameter_data = parameters[0].as_object(); auto parameter_type_string = parameter_data.get_deprecated_string("type"sv).value(); function_generator.set("type_check", TRY(generate_calculation_type_check("argument_type"sv, parameter_type_string))); - TRY(function_generator.try_append(R"~~~( + function_generator.append(R"~~~( if (!(@type_check@)) { dbgln_if(CSS_PARSER_DEBUG, "@name:lowercase@() argument #{} type ({}) is not an accepted type", parsed_arguments.size(), MUST(argument_type.dump())); return nullptr; @@ -205,7 +205,7 @@ OwnPtr Parser::parse_math_function(PropertyID property_id, Func return @name:titlecase@CalculationNode::create(move(parsed_arguments)); } -)~~~")); +)~~~"); } else { // Function with specified parameters. @@ -219,14 +219,14 @@ OwnPtr Parser::parse_math_function(PropertyID property_id, Func function_generator.set("min_argument_count", TRY(String::number(min_argument_count))); function_generator.set("max_argument_count", TRY(String::number(max_argument_count))); - TRY(function_generator.try_append(R"~~~( + function_generator.append(R"~~~( if (arguments.size() < @min_argument_count@ || arguments.size() > @max_argument_count@) { dbgln_if(CSS_PARSER_DEBUG, "@name:lowercase@() has wrong number of arguments {}, expected between @min_argument_count@ and @max_argument_count@ inclusive", arguments.size()); return nullptr; } size_t argument_index = 0; [[maybe_unused]] CSSNumericType previous_argument_type; -)~~~")); +)~~~"); size_t parameter_index = 0; StringView previous_parameter_type_string; @@ -268,45 +268,45 @@ OwnPtr Parser::parse_math_function(PropertyID property_id, Func } } - TRY(parameter_generator.try_append(R"~~~( + parameter_generator.append(R"~~~( @parameter_type@ parameter_@parameter_index@@parameter_default@; -)~~~")); +)~~~"); if (parameter_required) { - TRY(parameter_generator.try_append(R"~~~( + parameter_generator.append(R"~~~( if (argument_index >= arguments.size()) { dbgln_if(CSS_PARSER_DEBUG, "@name:lowercase@() missing required argument '@parameter_name@'"); return nullptr; } else { -)~~~")); +)~~~"); } else { - TRY(parameter_generator.try_append(R"~~~( + parameter_generator.append(R"~~~( if (argument_index < arguments.size()) { -)~~~")); +)~~~"); } - TRY(parameter_generator.try_append(R"~~~( + parameter_generator.append(R"~~~( auto maybe_parsed_argument_@parameter_index@ = @parse_function@; if (maybe_parsed_argument_@parameter_index@@check_function@) { parameter_@parameter_index@ = maybe_parsed_argument_@parameter_index@@release_function@; argument_index++; -)~~~")); +)~~~"); if (parameter_required) { - TRY(parameter_generator.try_append(R"~~~( + parameter_generator.append(R"~~~( } else { dbgln_if(CSS_PARSER_DEBUG, "@name:lowercase@() required argument '@parameter_name@' failed to parse"); return nullptr; -)~~~")); +)~~~"); } - TRY(parameter_generator.try_append(R"~~~( + parameter_generator.append(R"~~~( } } -)~~~")); +)~~~"); if (parameter_is_calculation) { auto parameter_type_variable = TRY(String::formatted("argument_type_{}", parameter_index)); parameter_generator.set("type_check", TRY(generate_calculation_type_check(parameter_type_variable, parameter_type_string))); - TRY(parameter_generator.try_append(R"~~~( + parameter_generator.append(R"~~~( auto maybe_argument_type_@parameter_index@ = parameter_@parameter_index@->determine_type(property_id); if (!maybe_argument_type_@parameter_index@.has_value()) { dbgln_if(CSS_PARSER_DEBUG, "@name:lowercase@() argument '@parameter_name@' couldn't determine its type"); @@ -318,21 +318,21 @@ OwnPtr Parser::parse_math_function(PropertyID property_id, Func dbgln_if(CSS_PARSER_DEBUG, "@name:lowercase@() argument '@parameter_name@' type ({}) is not an accepted type", MUST(argument_type_@parameter_index@.dump())); return nullptr; } -)~~~")); +)~~~"); // NOTE: In all current cases, the parameters that take the same types must resolve to the same CSSNumericType. // This is a bit of a hack, but serves our needs for now. if (previous_parameter_type_string == parameter_type_string) { - TRY(parameter_generator.try_append(R"~~~( + parameter_generator.append(R"~~~( if (argument_type_@parameter_index@ != previous_argument_type) { dbgln_if(CSS_PARSER_DEBUG, "@name:lowercase@() argument '@parameter_name@' type ({}) doesn't match type of previous arguments ({})", MUST(argument_type_@parameter_index@.dump()), MUST(previous_argument_type.dump())); return nullptr; } -)~~~")); +)~~~"); } - TRY(parameter_generator.try_append(R"~~~( + parameter_generator.append(R"~~~( previous_argument_type = argument_type_@parameter_index@; -)~~~")); +)~~~"); } parameter_index++; @@ -341,7 +341,7 @@ OwnPtr Parser::parse_math_function(PropertyID property_id, Func })); // Generate the call to the constructor - TRY(function_generator.try_append(" return @name:titlecase@CalculationNode::create("sv)); + function_generator.append(" return @name:titlecase@CalculationNode::create("sv); parameter_index = 0; TRY(parameters.try_for_each([&](JsonValue const& parameter_value) -> ErrorOr { auto& parameter = parameter_value.as_object(); @@ -358,26 +358,26 @@ OwnPtr Parser::parse_math_function(PropertyID property_id, Func } if (parameter_index == 0) { - TRY(parameter_generator.try_append("parameter_@parameter_index@@release_value@"sv)); + parameter_generator.append("parameter_@parameter_index@@release_value@"sv); } else { - TRY(parameter_generator.try_append(", parameter_@parameter_index@@release_value@"sv)); + parameter_generator.append(", parameter_@parameter_index@@release_value@"sv); } parameter_index++; return {}; })); - TRY(function_generator.try_append(R"~~~(); + function_generator.append(R"~~~(); } -)~~~")); +)~~~"); } return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( return nullptr; } } -)~~~")); +)~~~"); TRY(file.write_until_depleted(generator.as_string_view().bytes())); return {}; diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSMediaFeatureID.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSMediaFeatureID.cpp index e938c2b4646..cda82063b44 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSMediaFeatureID.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSMediaFeatureID.cpp @@ -42,7 +42,7 @@ ErrorOr generate_header_file(JsonObject& media_feature_data, Core::File& f { StringBuilder builder; SourceGenerator generator { builder }; - TRY(generator.try_append(R"~~~(#pragma once + generator.append(R"~~~(#pragma once #include #include @@ -58,17 +58,17 @@ enum class MediaFeatureValueType { Resolution, }; -enum class MediaFeatureID {)~~~")); +enum class MediaFeatureID {)~~~"); TRY(media_feature_data.try_for_each_member([&](auto& name, auto&) -> ErrorOr { auto member_generator = TRY(generator.fork()); member_generator.set("name:titlecase", TRY(title_casify(name))); - TRY(member_generator.try_append(R"~~~( - @name:titlecase@,)~~~")); + member_generator.append(R"~~~( + @name:titlecase@,)~~~"); return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( }; Optional media_feature_id_from_string(StringView); @@ -79,7 +79,7 @@ bool media_feature_accepts_type(MediaFeatureID, MediaFeatureValueType); bool media_feature_accepts_identifier(MediaFeatureID, ValueID); } -)~~~")); +)~~~"); TRY(file.write_until_depleted(generator.as_string_view().bytes())); return {}; @@ -89,23 +89,23 @@ ErrorOr generate_implementation_file(JsonObject& media_feature_data, Core: { StringBuilder builder; SourceGenerator generator { builder }; - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( #include #include namespace Web::CSS { Optional media_feature_id_from_string(StringView string) -{)~~~")); +{)~~~"); TRY(media_feature_data.try_for_each_member([&](auto& name, auto&) -> ErrorOr { auto member_generator = TRY(generator.fork()); member_generator.set("name", TRY(String::from_deprecated_string(name))); member_generator.set("name:titlecase", TRY(title_casify(name))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( if (Infra::is_ascii_case_insensitive_match(string, "@name@"sv)) return MediaFeatureID::@name:titlecase@; -)~~~")); +)~~~"); return {}; })); @@ -121,20 +121,20 @@ StringView string_from_media_feature_id(MediaFeatureID media_feature_id) auto member_generator = TRY(generator.fork()); member_generator.set("name", TRY(String::from_deprecated_string(name))); member_generator.set("name:titlecase", TRY(title_casify(name))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( case MediaFeatureID::@name:titlecase@: - return "@name@"sv;)~~~")); + return "@name@"sv;)~~~"); return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( } VERIFY_NOT_REACHED(); } bool media_feature_type_is_range(MediaFeatureID media_feature_id) { - switch (media_feature_id) {)~~~")); + switch (media_feature_id) {)~~~"); TRY(media_feature_data.try_for_each_member([&](auto& name, auto& value) -> ErrorOr { VERIFY(value.is_object()); @@ -146,20 +146,20 @@ bool media_feature_type_is_range(MediaFeatureID media_feature_id) auto feature_type = feature.get_deprecated_string("type"sv); VERIFY(feature_type.has_value()); member_generator.set("is_range", feature_type.value() == "range" ? "true"_string : "false"_string); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( case MediaFeatureID::@name:titlecase@: - return @is_range@;)~~~")); + return @is_range@;)~~~"); return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( } VERIFY_NOT_REACHED(); } bool media_feature_accepts_type(MediaFeatureID media_feature_id, MediaFeatureValueType value_type) { - switch (media_feature_id) {)~~~")); + switch (media_feature_id) {)~~~"); TRY(media_feature_data.try_for_each_member([&](auto& name, auto& member) -> ErrorOr { VERIFY(member.is_object()); @@ -167,15 +167,15 @@ bool media_feature_accepts_type(MediaFeatureID media_feature_id, MediaFeatureVal auto member_generator = TRY(generator.fork()); member_generator.set("name:titlecase", TRY(title_casify(name))); - TRY(member_generator.try_append(R"~~~( - case MediaFeatureID::@name:titlecase@:)~~~")); + member_generator.append(R"~~~( + case MediaFeatureID::@name:titlecase@:)~~~"); bool have_output_value_type_switch = false; if (feature.has("values"sv)) { auto append_value_type_switch_if_needed = [&]() -> ErrorOr { if (!have_output_value_type_switch) { - TRY(member_generator.try_append(R"~~~( - switch (value_type) {)~~~")); + member_generator.append(R"~~~( + switch (value_type) {)~~~"); } have_output_value_type_switch = true; return {}; @@ -191,29 +191,29 @@ bool media_feature_accepts_type(MediaFeatureID media_feature_id, MediaFeatureVal continue; if (type_name == "") { TRY(append_value_type_switch_if_needed()); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( case MediaFeatureValueType::Boolean: - return true;)~~~")); + return true;)~~~"); } else if (type_name == "") { TRY(append_value_type_switch_if_needed()); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( case MediaFeatureValueType::Integer: - return true;)~~~")); + return true;)~~~"); } else if (type_name == "") { TRY(append_value_type_switch_if_needed()); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( case MediaFeatureValueType::Length: - return true;)~~~")); + return true;)~~~"); } else if (type_name == "") { TRY(append_value_type_switch_if_needed()); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( case MediaFeatureValueType::Ratio: - return true;)~~~")); + return true;)~~~"); } else if (type_name == "") { TRY(append_value_type_switch_if_needed()); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( case MediaFeatureValueType::Resolution: - return true;)~~~")); + return true;)~~~"); } else { warnln("Unrecognized media-feature value type: `{}`", type_name); VERIFY_NOT_REACHED(); @@ -221,25 +221,25 @@ bool media_feature_accepts_type(MediaFeatureID media_feature_id, MediaFeatureVal } } if (have_output_value_type_switch) { - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( default: return false; - })~~~")); + })~~~"); } else { - TRY(member_generator.try_append(R"~~~( - return false;)~~~")); + member_generator.append(R"~~~( + return false;)~~~"); } return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( } VERIFY_NOT_REACHED(); } bool media_feature_accepts_identifier(MediaFeatureID media_feature_id, ValueID identifier) { - switch (media_feature_id) {)~~~")); + switch (media_feature_id) {)~~~"); TRY(media_feature_data.try_for_each_member([&](auto& name, auto& member) -> ErrorOr { VERIFY(member.is_object()); @@ -247,15 +247,15 @@ bool media_feature_accepts_identifier(MediaFeatureID media_feature_id, ValueID i auto member_generator = TRY(generator.fork()); member_generator.set("name:titlecase", TRY(title_casify(name))); - TRY(member_generator.try_append(R"~~~( - case MediaFeatureID::@name:titlecase@:)~~~")); + member_generator.append(R"~~~( + case MediaFeatureID::@name:titlecase@:)~~~"); bool have_output_identifier_switch = false; if (feature.has("values"sv)) { auto append_identifier_switch_if_needed = [&]() -> ErrorOr { if (!have_output_identifier_switch) { - TRY(member_generator.try_append(R"~~~( - switch (identifier) {)~~~")); + member_generator.append(R"~~~( + switch (identifier) {)~~~"); } have_output_identifier_switch = true; return {}; @@ -273,30 +273,30 @@ bool media_feature_accepts_identifier(MediaFeatureID media_feature_id, ValueID i auto ident_generator = TRY(member_generator.fork()); ident_generator.set("identifier:titlecase", TRY(title_casify(identifier_name))); - TRY(ident_generator.try_append(R"~~~( + ident_generator.append(R"~~~( case ValueID::@identifier:titlecase@: - return true;)~~~")); + return true;)~~~"); } } if (have_output_identifier_switch) { - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( default: return false; - })~~~")); + })~~~"); } else { - TRY(member_generator.try_append(R"~~~( - return false;)~~~")); + member_generator.append(R"~~~( + return false;)~~~"); } return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( } VERIFY_NOT_REACHED(); } } -)~~~")); +)~~~"); TRY(file.write_until_depleted(generator.as_string_view().bytes())); return {}; diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPropertyID.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPropertyID.cpp index 83d2b53150b..345b049ed81 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPropertyID.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPropertyID.cpp @@ -91,7 +91,7 @@ ErrorOr generate_header_file(JsonObject& properties, Core::File& file) { StringBuilder builder; SourceGenerator generator { builder }; - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( #pragma once #include @@ -106,7 +106,7 @@ enum class PropertyID { Invalid, Custom, All, -)~~~")); +)~~~"); Vector shorthand_property_ids; Vector longhand_property_ids; @@ -126,18 +126,18 @@ enum class PropertyID { auto member_generator = TRY(generator.fork()); member_generator.set("name:titlecase", TRY(title_casify(name))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( @name:titlecase@, -)~~~")); +)~~~"); } for (auto& name : longhand_property_ids) { auto member_generator = TRY(generator.fork()); member_generator.set("name:titlecase", TRY(title_casify(name))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( @name:titlecase@, -)~~~")); +)~~~"); } generator.set("first_property_id", TRY(title_casify(first_property_id))); @@ -149,7 +149,7 @@ enum class PropertyID { generator.set("first_longhand_property_id", TRY(title_casify(longhand_property_ids.first()))); generator.set("last_longhand_property_id", TRY(title_casify(longhand_property_ids.last()))); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( }; Optional property_id_from_camel_case_string(StringView); @@ -223,7 +223,7 @@ struct Traits : public GenericTraits static unsigned hash(Web::CSS::PropertyID property_id) { return int_hash((unsigned)property_id); } }; } // namespace AK -)~~~")); +)~~~"); TRY(file.write_until_depleted(generator.as_string_view().bytes())); return {}; @@ -235,11 +235,11 @@ ErrorOr generate_bounds_checking_function(JsonObject& properties, SourceGe generator.set("css_type_name", TRY(String::from_utf8(css_type_name))); generator.set("type_name", TRY(String::from_utf8(type_name))); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( bool property_accepts_@css_type_name@(PropertyID property_id, [[maybe_unused]] @type_name@ const& value) { switch (property_id) { -)~~~")); +)~~~"); TRY(properties.try_for_each_member([&](auto& name, JsonValue const& value) -> ErrorOr { VERIFY(value.is_object()); @@ -252,9 +252,9 @@ bool property_accepts_@css_type_name@(PropertyID property_id, [[maybe_unused]] @ auto property_generator = TRY(generator.fork()); property_generator.set("property_name:titlecase", TRY(title_casify(name))); - TRY(property_generator.try_append(R"~~~( + property_generator.append(R"~~~( case PropertyID::@property_name:titlecase@: - return )~~~")); + return )~~~"); if (type_and_range.size() > 1) { auto range = type_and_range[1]; @@ -279,7 +279,7 @@ bool property_accepts_@css_type_name@(PropertyID property_id, [[maybe_unused]] @ property_generator.set("value_number", TRY(String::from_utf8(value_string))); property_generator.set("value_getter", TRY(String::from_utf8(value_getter.value()))); property_generator.set("comparator", TRY(String::from_utf8(comparator))); - TRY(property_generator.try_append("@value_getter@ @comparator@ @value_number@")); + property_generator.append("@value_getter@ @comparator@ @value_number@"); return {}; } @@ -292,14 +292,14 @@ bool property_accepts_@css_type_name@(PropertyID property_id, [[maybe_unused]] @ property_generator.set("value_number", TRY(String::from_utf8(value_number))); property_generator.set("value_unit", TRY(title_casify(value_unit))); property_generator.set("comparator", TRY(String::from_utf8(comparator))); - TRY(property_generator.try_append("value @comparator@ @type_name@(@value_number@, @type_name@::Type::@value_unit@)")); + property_generator.append("value @comparator@ @type_name@(@value_number@, @type_name@::Type::@value_unit@)"); return {}; }; if (!min_value_string.is_empty()) TRY(output_check(min_value_string, ">="sv)); if (!min_value_string.is_empty() && !max_value_string.is_empty()) - TRY(property_generator.try_append(" && ")); + property_generator.append(" && "); if (!max_value_string.is_empty()) TRY(output_check(max_value_string, "<="sv)); property_generator.appendln(";"); @@ -312,12 +312,12 @@ bool property_accepts_@css_type_name@(PropertyID property_id, [[maybe_unused]] @ return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( default: return false; } } -)~~~")); +)~~~"); return {}; } @@ -326,7 +326,7 @@ ErrorOr generate_implementation_file(JsonObject& properties, Core::File& f StringBuilder builder; SourceGenerator generator { builder }; - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( #include #include #include @@ -340,7 +340,7 @@ namespace Web::CSS { Optional property_id_from_camel_case_string(StringView string) { -)~~~")); +)~~~"); TRY(properties.try_for_each_member([&](auto& name, auto& value) -> ErrorOr { VERIFY(value.is_object()); @@ -349,14 +349,14 @@ Optional property_id_from_camel_case_string(StringView string) member_generator.set("name", TRY(String::from_deprecated_string(name))); member_generator.set("name:titlecase", TRY(title_casify(name))); member_generator.set("name:camelcase", TRY(camel_casify(name))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( if (string.equals_ignoring_ascii_case("@name:camelcase@"sv)) return PropertyID::@name:titlecase@; -)~~~")); +)~~~"); return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( return {}; } @@ -364,7 +364,7 @@ Optional property_id_from_string(StringView string) { if (Infra::is_ascii_case_insensitive_match(string, "all"sv)) return PropertyID::All; -)~~~")); +)~~~"); TRY(properties.try_for_each_member([&](auto& name, auto& value) -> ErrorOr { VERIFY(value.is_object()); @@ -372,20 +372,20 @@ Optional property_id_from_string(StringView string) auto member_generator = TRY(generator.fork()); member_generator.set("name", TRY(String::from_deprecated_string(name))); member_generator.set("name:titlecase", TRY(title_casify(name))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( if (Infra::is_ascii_case_insensitive_match(string, "@name@"sv)) return PropertyID::@name:titlecase@; -)~~~")); +)~~~"); return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( return {}; } StringView string_from_property_id(PropertyID property_id) { switch (property_id) { -)~~~")); +)~~~"); TRY(properties.try_for_each_member([&](auto& name, auto& value) -> ErrorOr { VERIFY(value.is_object()); @@ -393,14 +393,14 @@ StringView string_from_property_id(PropertyID property_id) { auto member_generator = TRY(generator.fork()); member_generator.set("name", TRY(String::from_deprecated_string(name))); member_generator.set("name:titlecase", TRY(title_casify(name))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( case PropertyID::@name:titlecase@: return "@name@"sv; -)~~~")); +)~~~"); return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( default: return "(invalid CSS::PropertyID)"sv; } @@ -409,7 +409,7 @@ StringView string_from_property_id(PropertyID property_id) { bool is_inherited_property(PropertyID property_id) { switch (property_id) { -)~~~")); +)~~~"); TRY(properties.try_for_each_member([&](auto& name, auto& value) -> ErrorOr { VERIFY(value.is_object()); @@ -424,15 +424,15 @@ bool is_inherited_property(PropertyID property_id) if (inherited) { auto member_generator = TRY(generator.fork()); member_generator.set("name:titlecase", TRY(title_casify(name))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( case PropertyID::@name:titlecase@: return true; -)~~~")); +)~~~"); } return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( default: return false; } @@ -441,7 +441,7 @@ bool is_inherited_property(PropertyID property_id) bool property_affects_layout(PropertyID property_id) { switch (property_id) { -)~~~")); +)~~~"); TRY(properties.try_for_each_member([&](auto& name, auto& value) -> ErrorOr { VERIFY(value.is_object()); @@ -453,14 +453,14 @@ bool property_affects_layout(PropertyID property_id) if (affects_layout) { auto member_generator = TRY(generator.fork()); member_generator.set("name:titlecase", TRY(title_casify(name))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( case PropertyID::@name:titlecase@: -)~~~")); +)~~~"); } return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( return true; default: return false; @@ -470,7 +470,7 @@ bool property_affects_layout(PropertyID property_id) bool property_affects_stacking_context(PropertyID property_id) { switch (property_id) { -)~~~")); +)~~~"); TRY(properties.try_for_each_member([&](auto& name, auto& value) -> ErrorOr { VERIFY(value.is_object()); @@ -482,14 +482,14 @@ bool property_affects_stacking_context(PropertyID property_id) if (affects_stacking_context) { auto member_generator = TRY(generator.fork()); member_generator.set("name:titlecase", TRY(title_casify(name))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( case PropertyID::@name:titlecase@: -)~~~")); +)~~~"); } return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( return true; default: return false; @@ -508,7 +508,7 @@ NonnullRefPtr property_initial_value(JS::Realm& context_realm, Prope Parser::ParsingContext parsing_context(context_realm); switch (property_id) { -)~~~")); +)~~~"); auto output_initial_value_code = [&](auto& name, auto& object) -> ErrorOr { if (!object.has("initial"sv)) { @@ -522,7 +522,7 @@ NonnullRefPtr property_initial_value(JS::Realm& context_realm, Prope auto member_generator = TRY(generator.fork()); member_generator.set("name:titlecase", TRY(title_casify(name))); member_generator.set("initial_value_string", TRY(String::from_deprecated_string(initial_value_string))); - TRY(member_generator.try_append( + member_generator.append( R"~~~( case PropertyID::@name:titlecase@: { auto parsed_value = parse_css_value(parsing_context, "@initial_value_string@"sv, PropertyID::@name:titlecase@); @@ -531,7 +531,7 @@ NonnullRefPtr property_initial_value(JS::Realm& context_realm, Prope initial_values[to_underlying(PropertyID::@name:titlecase@)] = initial_value; return initial_value; } -)~~~")); +)~~~"); return {}; }; @@ -541,7 +541,7 @@ NonnullRefPtr property_initial_value(JS::Realm& context_realm, Prope return {}; })); - TRY(generator.try_append( + generator.append( R"~~~( default: VERIFY_NOT_REACHED(); } VERIFY_NOT_REACHED(); @@ -550,7 +550,7 @@ NonnullRefPtr property_initial_value(JS::Realm& context_realm, Prope bool property_has_quirk(PropertyID property_id, Quirk quirk) { switch (property_id) { -)~~~")); +)~~~"); TRY(properties.try_for_each_member([&](auto& name, auto& value) -> ErrorOr { VERIFY(value.is_object()); @@ -562,31 +562,31 @@ bool property_has_quirk(PropertyID property_id, Quirk quirk) if (!quirks.is_empty()) { auto property_generator = TRY(generator.fork()); property_generator.set("name:titlecase", TRY(title_casify(name))); - TRY(property_generator.try_append(R"~~~( + property_generator.append(R"~~~( case PropertyID::@name:titlecase@: { switch (quirk) { -)~~~")); +)~~~"); for (auto& quirk : quirks.values()) { VERIFY(quirk.is_string()); auto quirk_generator = TRY(property_generator.fork()); quirk_generator.set("quirk:titlecase", TRY(title_casify(quirk.as_string()))); - TRY(quirk_generator.try_append(R"~~~( + quirk_generator.append(R"~~~( case Quirk::@quirk:titlecase@: return true; -)~~~")); +)~~~"); } - TRY(property_generator.try_append(R"~~~( + property_generator.append(R"~~~( default: return false; } } -)~~~")); +)~~~"); } } return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( default: return false; } @@ -595,7 +595,7 @@ bool property_has_quirk(PropertyID property_id, Quirk quirk) bool property_accepts_type(PropertyID property_id, ValueType value_type) { switch (property_id) { -)~~~")); +)~~~"); TRY(properties.try_for_each_member([&](auto& name, auto& value) -> ErrorOr { VERIFY(value.is_object()); auto& object = value.as_object(); @@ -603,10 +603,10 @@ bool property_accepts_type(PropertyID property_id, ValueType value_type) auto& valid_types = maybe_valid_types.value(); auto property_generator = TRY(generator.fork()); property_generator.set("name:titlecase", TRY(title_casify(name))); - TRY(property_generator.try_append(R"~~~( + property_generator.append(R"~~~( case PropertyID::@name:titlecase@: { switch (value_type) { -)~~~")); +)~~~"); bool did_output_accepted_type = false; for (auto& type : valid_types.values()) { @@ -658,16 +658,16 @@ bool property_accepts_type(PropertyID property_id, ValueType value_type) if (did_output_accepted_type) property_generator.appendln(" return true;"); - TRY(property_generator.try_append(R"~~~( + property_generator.append(R"~~~( default: return false; } } -)~~~")); +)~~~"); } return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( default: return false; } @@ -676,7 +676,7 @@ bool property_accepts_type(PropertyID property_id, ValueType value_type) bool property_accepts_identifier(PropertyID property_id, ValueID identifier) { switch (property_id) { -)~~~")); +)~~~"); TRY(properties.try_for_each_member([&](auto& name, auto& value) -> ErrorOr { VERIFY(value.is_object()); auto& object = value.as_object(); @@ -693,12 +693,12 @@ bool property_accepts_identifier(PropertyID property_id, ValueID identifier) identifier_generator.set("identifier:titlecase", TRY(title_casify(identifier.as_string()))); identifier_generator.appendln(" case ValueID::@identifier:titlecase@:"); } - TRY(property_generator.try_append(R"~~~( + property_generator.append(R"~~~( return true; default: break; } -)~~~")); +)~~~"); } if (auto maybe_valid_types = object.get_array("valid-types"sv); maybe_valid_types.has_value() && !maybe_valid_types->is_empty()) { @@ -710,19 +710,19 @@ bool property_accepts_identifier(PropertyID property_id, ValueID identifier) auto type_generator = TRY(generator.fork()); type_generator.set("type_name:snakecase", TRY(snake_casify(type_name))); - TRY(type_generator.try_append(R"~~~( + type_generator.append(R"~~~( if (value_id_to_@type_name:snakecase@(identifier).has_value()) return true; -)~~~")); +)~~~"); } } - TRY(property_generator.try_append(R"~~~( + property_generator.append(R"~~~( return false; } -)~~~")); +)~~~"); return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( default: return false; } @@ -731,7 +731,7 @@ bool property_accepts_identifier(PropertyID property_id, ValueID identifier) Optional property_resolves_percentages_relative_to(PropertyID property_id) { switch (property_id) { -)~~~")); +)~~~"); TRY(properties.try_for_each_member([&](auto& name, auto& value) -> ErrorOr { VERIFY(value.is_object()); @@ -739,15 +739,15 @@ Optional property_resolves_percentages_relative_to(PropertyID propert auto property_generator = TRY(generator.fork()); property_generator.set("name:titlecase", TRY(title_casify(name))); property_generator.set("resolved_type:titlecase", TRY(title_casify(resolved_type.value()))); - TRY(property_generator.try_append(R"~~~( + property_generator.append(R"~~~( case PropertyID::@name:titlecase@: return ValueType::@resolved_type:titlecase@; -)~~~")); +)~~~"); } return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( default: return {}; } @@ -756,7 +756,7 @@ Optional property_resolves_percentages_relative_to(PropertyID propert size_t property_maximum_value_count(PropertyID property_id) { switch (property_id) { -)~~~")); +)~~~"); TRY(properties.try_for_each_member([&](auto& name, auto& value) -> ErrorOr { VERIFY(value.is_object()); @@ -766,19 +766,19 @@ size_t property_maximum_value_count(PropertyID property_id) auto property_generator = TRY(generator.fork()); property_generator.set("name:titlecase", TRY(title_casify(name))); property_generator.set("max_values", TRY(String::from_deprecated_string(max_values->to_deprecated_string()))); - TRY(property_generator.try_append(R"~~~( + property_generator.append(R"~~~( case PropertyID::@name:titlecase@: return @max_values@; -)~~~")); +)~~~"); } return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( default: return 1; } -})~~~")); +})~~~"); TRY(generate_bounds_checking_function(properties, generator, "angle"sv, "Angle"sv, "Deg"sv)); TRY(generate_bounds_checking_function(properties, generator, "frequency"sv, "Frequency"sv, "Hertz"sv)); @@ -789,11 +789,11 @@ size_t property_maximum_value_count(PropertyID property_id) TRY(generate_bounds_checking_function(properties, generator, "resolution"sv, "Resolution"sv, "Dpi"sv)); TRY(generate_bounds_checking_function(properties, generator, "time"sv, "Time"sv, "S"sv)); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( Vector longhands_for_shorthand(PropertyID property_id) { switch (property_id) { -)~~~")); +)~~~"); TRY(properties.try_for_each_member([&](auto& name, auto& value) -> ErrorOr { if (value.as_object().has("longhands"sv)) { auto longhands = value.as_object().get("longhands"sv); @@ -807,30 +807,30 @@ Vector longhands_for_shorthand(PropertyID property_id) if (first) first = false; else - TRY(builder.try_append(", "sv)); + builder.append(", "sv); TRY(builder.try_appendff("PropertyID::{}", TRY(title_casify(longhand.to_deprecated_string())))); return IterationDecision::Continue; })); property_generator.set("longhands", builder.to_deprecated_string()); - TRY(property_generator.try_append(R"~~~( + property_generator.append(R"~~~( case PropertyID::@name:titlecase@: return { @longhands@ }; -)~~~")); +)~~~"); } return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( default: return { }; } } -)~~~")); +)~~~"); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( } // namespace Web::CSS -)~~~")); +)~~~"); TRY(file.write_until_depleted(generator.as_string_view().bytes())); return {}; diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPseudoClass.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPseudoClass.cpp index 348d9042cd8..a33823a0845 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPseudoClass.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPseudoClass.cpp @@ -42,7 +42,7 @@ ErrorOr generate_header_file(JsonObject& pseudo_classes_data, Core::File& StringBuilder builder; SourceGenerator generator { builder }; - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( #pragma once #include @@ -51,7 +51,7 @@ ErrorOr generate_header_file(JsonObject& pseudo_classes_data, Core::File& namespace Web::CSS { enum class PseudoClass { -)~~~")); +)~~~"); TRY(pseudo_classes_data.try_for_each_member([&](auto& name, auto&) -> ErrorOr { auto member_generator = TRY(generator.fork()); @@ -60,7 +60,7 @@ enum class PseudoClass { member_generator.appendln(" @name:titlecase@,"); return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( }; Optional pseudo_class_from_string(StringView); @@ -83,7 +83,7 @@ struct PseudoClassMetadata { PseudoClassMetadata pseudo_class_metadata(PseudoClass); } -)~~~")); +)~~~"); TRY(file.write_until_depleted(generator.as_string_view().bytes())); return {}; @@ -94,28 +94,28 @@ ErrorOr generate_implementation_file(JsonObject& pseudo_classes_data, Core StringBuilder builder; SourceGenerator generator { builder }; - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( #include namespace Web::CSS { Optional pseudo_class_from_string(StringView string) { -)~~~")); +)~~~"); TRY(pseudo_classes_data.try_for_each_member([&](auto& name, auto&) -> ErrorOr { auto member_generator = TRY(generator.fork()); member_generator.set("name", TRY(String::from_deprecated_string(name))); member_generator.set("name:titlecase", TRY(title_casify(name))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( if (string.equals_ignoring_ascii_case("@name@"sv)) return PseudoClass::@name:titlecase@; -)~~~")); +)~~~"); return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( return {}; } @@ -123,21 +123,21 @@ Optional pseudo_class_from_string(StringView string) StringView pseudo_class_name(PseudoClass pseudo_class) { switch (pseudo_class) { -)~~~")); +)~~~"); TRY(pseudo_classes_data.try_for_each_member([&](auto& name, auto&) -> ErrorOr { auto member_generator = TRY(generator.fork()); member_generator.set("name", TRY(String::from_deprecated_string(name))); member_generator.set("name:titlecase", TRY(title_casify(name))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( case PseudoClass::@name:titlecase@: return "@name@"sv; -)~~~")); +)~~~"); return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( } VERIFY_NOT_REACHED(); } @@ -145,7 +145,7 @@ StringView pseudo_class_name(PseudoClass pseudo_class) PseudoClassMetadata pseudo_class_metadata(PseudoClass pseudo_class) { switch (pseudo_class) { -)~~~")); +)~~~"); TRY(pseudo_classes_data.try_for_each_member([&](auto& name, JsonValue const& value) -> ErrorOr { auto member_generator = TRY(generator.fork()); @@ -187,24 +187,24 @@ PseudoClassMetadata pseudo_class_metadata(PseudoClass pseudo_class) member_generator.set("is_valid_as_function", is_valid_as_function ? "true"_string : "false"_string); member_generator.set("is_valid_as_identifier", is_valid_as_identifier ? "true"_string : "false"_string); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( case PseudoClass::@name:titlecase@: return { .parameter_type = PseudoClassMetadata::ParameterType::@parameter_type@, .is_valid_as_function = @is_valid_as_function@, .is_valid_as_identifier = @is_valid_as_identifier@, }; -)~~~")); +)~~~"); return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( } VERIFY_NOT_REACHED(); } } -)~~~")); +)~~~"); TRY(file.write_until_depleted(generator.as_string_view().bytes())); return {}; diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSTransformFunctions.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSTransformFunctions.cpp index 5b7da4bc2e3..83364a0c15b 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSTransformFunctions.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSTransformFunctions.cpp @@ -53,7 +53,7 @@ ErrorOr generate_header_file(JsonObject& transforms_data, Core::File& file StringBuilder builder; SourceGenerator generator { builder }; - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( #pragma once #include @@ -62,7 +62,7 @@ ErrorOr generate_header_file(JsonObject& transforms_data, Core::File& file namespace Web::CSS { -)~~~")); +)~~~"); generator.appendln("enum class TransformFunction {"); TRY(transforms_data.try_for_each_member([&](auto& name, auto&) -> ErrorOr { @@ -76,7 +76,7 @@ namespace Web::CSS { generator.appendln("Optional transform_function_from_string(StringView);"); generator.appendln("StringView to_string(TransformFunction);"); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( enum class TransformFunctionParameterType { Angle, Length, @@ -93,7 +93,7 @@ struct TransformFunctionMetadata { Vector parameters; }; TransformFunctionMetadata transform_function_metadata(TransformFunction); -)~~~")); +)~~~"); generator.appendln("\n}"); @@ -106,68 +106,68 @@ ErrorOr generate_implementation_file(JsonObject& transforms_data, Core::Fi StringBuilder builder; SourceGenerator generator { builder }; - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( #include #include namespace Web::CSS { -)~~~")); +)~~~"); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( Optional transform_function_from_string(StringView name) { -)~~~")); +)~~~"); TRY(transforms_data.try_for_each_member([&](auto& name, auto&) -> ErrorOr { auto member_generator = TRY(generator.fork()); member_generator.set("name", TRY(String::from_deprecated_string(name))); member_generator.set("name:titlecase", TRY(title_casify_transform_function(name))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( if (name.equals_ignoring_ascii_case("@name@"sv)) return TransformFunction::@name:titlecase@; -)~~~")); +)~~~"); return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( return {}; } -)~~~")); +)~~~"); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( StringView to_string(TransformFunction transform_function) { switch (transform_function) { -)~~~")); +)~~~"); TRY(transforms_data.try_for_each_member([&](auto& name, auto&) -> ErrorOr { auto member_generator = TRY(generator.fork()); member_generator.set("name", TRY(String::from_deprecated_string(name))); member_generator.set("name:titlecase", TRY(title_casify_transform_function(name))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( case TransformFunction::@name:titlecase@: return "@name@"sv; -)~~~")); +)~~~"); return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( default: VERIFY_NOT_REACHED(); } } -)~~~")); +)~~~"); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( TransformFunctionMetadata transform_function_metadata(TransformFunction transform_function) { switch (transform_function) { -)~~~")); +)~~~"); TRY(transforms_data.try_for_each_member([&](auto& name, auto& value) -> ErrorOr { VERIFY(value.is_object()); auto member_generator = TRY(generator.fork()); member_generator.set("name:titlecase", TRY(title_casify_transform_function(name))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( case TransformFunction::@name:titlecase@: return TransformFunctionMetadata { - .parameters = {)~~~")); + .parameters = {)~~~"); JsonArray const& parameters = value.as_object().get_array("parameters"sv).value(); bool first = true; @@ -189,24 +189,24 @@ TransformFunctionMetadata transform_function_metadata(TransformFunction transfor else VERIFY_NOT_REACHED(); - TRY(member_generator.try_append(first ? " "sv : ", "sv)); + member_generator.append(first ? " "sv : ", "sv); first = false; - TRY(member_generator.try_append(TRY(String::formatted("{{ TransformFunctionParameterType::{}, {}}}", parameter_type, value.as_object().get("required"sv)->to_deprecated_string())))); + member_generator.append(TRY(String::formatted("{{ TransformFunctionParameterType::{}, {}}}", parameter_type, value.as_object().get("required"sv)->to_deprecated_string()))); return {}; })); - TRY(member_generator.try_append(R"~~~( } + member_generator.append(R"~~~( } }; -)~~~")); +)~~~"); return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( default: VERIFY_NOT_REACHED(); } } -)~~~")); +)~~~"); generator.appendln("\n}"); diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSValueID.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSValueID.cpp index 05f3d1ade23..4d9965658b1 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSValueID.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSValueID.cpp @@ -43,7 +43,7 @@ ErrorOr generate_header_file(JsonArray& identifier_data, Core::File& file) { StringBuilder builder; SourceGenerator generator { builder }; - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( #pragma once #include @@ -53,19 +53,19 @@ namespace Web::CSS { enum class ValueID { Invalid, -)~~~")); +)~~~"); TRY(identifier_data.try_for_each([&](auto& name) -> ErrorOr { auto member_generator = TRY(generator.fork()); member_generator.set("name:titlecase", TRY(title_casify(name.to_deprecated_string()))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( @name:titlecase@, -)~~~")); +)~~~"); return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( }; Optional value_id_from_string(StringView); @@ -73,7 +73,7 @@ StringView string_from_value_id(ValueID); } -)~~~")); +)~~~"); TRY(file.write_until_depleted(generator.as_string_view().bytes())); return {}; @@ -84,7 +84,7 @@ ErrorOr generate_implementation_file(JsonArray& identifier_data, Core::Fil StringBuilder builder; SourceGenerator generator { builder }; - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( #include #include #include @@ -92,19 +92,19 @@ ErrorOr generate_implementation_file(JsonArray& identifier_data, Core::Fil namespace Web::CSS { HashMap g_stringview_to_value_id_map { -)~~~")); +)~~~"); TRY(identifier_data.try_for_each([&](auto& name) -> ErrorOr { auto member_generator = TRY(generator.fork()); member_generator.set("name", TRY(String::from_deprecated_string(name.to_deprecated_string()))); member_generator.set("name:titlecase", TRY(title_casify(name.to_deprecated_string()))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( {"@name@"sv, ValueID::@name:titlecase@}, -)~~~")); +)~~~"); return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( }; Optional value_id_from_string(StringView string) @@ -114,27 +114,27 @@ Optional value_id_from_string(StringView string) StringView string_from_value_id(ValueID value_id) { switch (value_id) { -)~~~")); +)~~~"); TRY(identifier_data.try_for_each([&](auto& name) -> ErrorOr { auto member_generator = TRY(generator.fork()); member_generator.set("name", TRY(String::from_deprecated_string(name.to_deprecated_string()))); member_generator.set("name:titlecase", TRY(title_casify(name.to_deprecated_string()))); - TRY(member_generator.try_append(R"~~~( + member_generator.append(R"~~~( case ValueID::@name:titlecase@: return "@name@"sv; - )~~~")); + )~~~"); return {}; })); - TRY(generator.try_append(R"~~~( + generator.append(R"~~~( default: return "(invalid CSS::ValueID)"sv; } } } // namespace Web::CSS -)~~~")); +)~~~"); TRY(file.write_until_depleted(generator.as_string_view().bytes())); return {};