1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 22:48:11 +00:00

LibUnicode: Generate a list of available calendars

This commit is contained in:
Timothy Flynn 2022-01-30 16:45:35 -05:00 committed by Linus Groh
parent 48eecaad64
commit ebd33e580b
4 changed files with 33 additions and 0 deletions

View file

@ -1863,6 +1863,8 @@ struct DayPeriodData {
};
)~~~");
generate_available_values(generator, "get_available_calendars"sv, locale_data.calendars, locale_data.calendar_aliases);
locale_data.unique_formats.generate(generator, "CalendarFormatImpl"sv, "s_calendar_formats"sv, 10);
locale_data.unique_symbol_lists.generate(generator, s_string_index_type, "s_symbol_lists"sv);
locale_data.unique_calendar_symbols.generate(generator, "CalendarSymbols"sv, "s_calendar_symbols"sv, 10);

View file

@ -488,3 +488,31 @@ static constexpr Array<Span<@type@ const>, @size@> @name@ { {
} };
)~~~");
}
template<typename T>
void generate_available_values(SourceGenerator& generator, StringView name, Vector<T> const& values, Vector<Alias> const& aliases = {})
{
generator.set("name", name);
generator.set("size", String::number(values.size()));
generator.append(R"~~~(
Span<StringView const> @name@()
{
static constexpr Array<StringView, @size@> values { {)~~~");
bool first = true;
for (auto const& value : values) {
generator.append(first ? " " : ", ");
first = false;
if (auto it = aliases.find_if([&](auto const& alias) { return alias.name == value; }); it != aliases.end())
generator.append(String::formatted("\"{}\"sv", it->alias));
else
generator.append(String::formatted("\"{}\"sv", value));
}
generator.append(R"~~~( } };
return values.span();
}
)~~~");
}