mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-05-11 21:52:53 +00:00
Meta: Don't assume how each generator wants to generate keyed map names
The generate_mapping helper generates a series of structs like: Array<SomeType, 1> s_mapping_key_0 {}; Array<SomeType, 2> s_mapping_key_1 {}; Array<SomeType, 3> s_mapping_key_2 {}; Array<Span<SomeType const>> s_mapping { { s_mapping_key_0.span(), s_mapping_key_1.span(), s_mapping_key_2.span(), } }; Where the names of the struct were generated by the format_mapping_name lambda inside the helper. Rather than this lambda making assumptions on how each generator wants to name its structs, add a parameter for the caller to provide a naming formatter. This is because the TimeZoneData generator will want pretty specific identifier formatting rules.
This commit is contained in:
parent
6da1bfeeea
commit
b543c3e490
Notes:
sideshowbarker
2024-07-17 21:13:47 +09:00
Author: https://github.com/trflynn89
Commit: b543c3e490
Pull-request: https://github.com/SerenityOS/serenity/pull/11799
Reviewed-by: https://github.com/linusg ✅
3 changed files with 14 additions and 8 deletions
|
@ -399,12 +399,18 @@ enum class @name@ : @underlying@ {)~~~");
|
|||
)~~~");
|
||||
}
|
||||
|
||||
template<typename LocalesType, typename ListFormatter>
|
||||
void generate_mapping(SourceGenerator& generator, LocalesType const& locales, StringView type, StringView name, StringView format, ListFormatter&& format_list)
|
||||
template<typename LocalesType, typename IdentifierFormatter, typename ListFormatter>
|
||||
void generate_mapping(SourceGenerator& generator, LocalesType const& locales, StringView type, StringView name, StringView format, IdentifierFormatter&& format_identifier, ListFormatter&& format_list)
|
||||
{
|
||||
auto format_mapping_name = [](StringView format, StringView name) {
|
||||
auto mapping_name = name.to_lowercase_string().replace("-"sv, "_"sv, true).replace("/"sv, "_"sv, true);
|
||||
return String::formatted(format, mapping_name);
|
||||
auto format_mapping_name = [&](StringView format, StringView name) {
|
||||
String mapping_name;
|
||||
|
||||
if constexpr (IsNullPointer<IdentifierFormatter>)
|
||||
mapping_name = name.replace("-"sv, "_"sv, true);
|
||||
else
|
||||
mapping_name = format_identifier(type, name);
|
||||
|
||||
return String::formatted(format, mapping_name.to_lowercase());
|
||||
};
|
||||
|
||||
Vector<String> mapping_names;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue