mirror of
https://github.com/fergalmoran/ladybird.git
synced 2025-12-22 09:19:03 +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:
committed by
Linus Groh
parent
6da1bfeeea
commit
b543c3e490
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user