/* * Copyright (c) 2022-2023, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ #include "GeneratorUtil.h" #include #include #include #include namespace { ErrorOr generate_header_file(JsonObject& functions_data, Core::File& file) { StringBuilder builder; SourceGenerator generator { builder }; generator.append(R"~~~( // This file is generated by GenerateCSSMathFunctions.cpp #pragma once namespace Web::CSS { enum class MathFunction { )~~~"); functions_data.for_each_member([&](auto& name, auto&) { auto member_generator = generator.fork(); member_generator.set("name:titlecase", title_casify(name)); member_generator.appendln(" @name:titlecase@,"sv); }); generator.append(R"~~~( }; } )~~~"); TRY(file.write_until_depleted(generator.as_string_view().bytes())); return {}; } String generate_calculation_type_check(StringView calculation_variable_name, StringView parameter_types) { StringBuilder builder; auto allowed_types = parameter_types.split_view('|'); bool first_type_check = true; for (auto const& allowed_type_name : allowed_types) { if (!first_type_check) builder.append(" || "sv); first_type_check = false; if (allowed_type_name == ""sv) { builder.appendff("{}.{}", calculation_variable_name, "matches_angle()"sv); } else if (allowed_type_name == ""sv) { builder.appendff("{}.{}", calculation_variable_name, "matches_dimension()"sv); } else if (allowed_type_name == ""sv) { builder.appendff("{}.{}", calculation_variable_name, "matches_flex()"sv); } else if (allowed_type_name == ""sv) { builder.appendff("{}.{}", calculation_variable_name, "matches_frequency()"sv); } else if (allowed_type_name == ""sv) { builder.appendff("{}.{}", calculation_variable_name, "matches_length()"sv); } else if (allowed_type_name == ""sv) { builder.appendff("{}.{}", calculation_variable_name, "matches_number()"sv); } else if (allowed_type_name == ""sv) { builder.appendff("{}.{}", calculation_variable_name, "matches_percentage()"sv); } else if (allowed_type_name == ""sv) { builder.appendff("{}.{}", calculation_variable_name, "matches_resolution()"sv); } else if (allowed_type_name == "