1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-28 07:55:07 +00:00

LibUnicode: Generate available values for the keywords co, kf, kn, hc

This also ensures we only include values we actually support in the
generated list of available values.
This commit is contained in:
Timothy Flynn 2022-07-14 09:37:36 -04:00 committed by Andreas Kling
parent a660040806
commit c2e5b20eb6
5 changed files with 53 additions and 7 deletions

View file

@ -526,18 +526,20 @@ 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 = {})
void generate_available_values(SourceGenerator& generator, StringView name, Vector<T> const& values, Vector<Alias> const& aliases = {}, Function<bool(StringView)> value_filter = {})
{
generator.set("name", name);
generator.set("size", String::number(values.size()));
generator.append(R"~~~(
Span<StringView const> @name@()
{
static constexpr Array<StringView, @size@> values { {)~~~");
static constexpr auto values = Array {)~~~");
bool first = true;
for (auto const& value : values) {
if (value_filter && !value_filter(value))
continue;
generator.append(first ? " "sv : ", "sv);
first = false;
@ -547,7 +549,7 @@ Span<StringView const> @name@()
generator.append(String::formatted("\"{}\"sv", value));
}
generator.append(R"~~~( } };
generator.append(R"~~~( };
return values.span();
}
)~~~");