mirror of
https://github.com/RGBCube/serenity
synced 2025-05-14 19:24:57 +00:00
LibUnicode: Add public methods to compare and lookup General Categories
Adds methods to retrieve a General Category from a string and to check if a code point matches a General Category.
This commit is contained in:
parent
f63287cd63
commit
5de6d3dd90
3 changed files with 58 additions and 1 deletions
|
@ -478,7 +478,7 @@ namespace Unicode {
|
|||
|
||||
generate_enum("Locale"sv, "None"sv, move(unicode_data.locales));
|
||||
generate_enum("Condition"sv, "None"sv, move(unicode_data.conditions));
|
||||
generate_enum("GeneralCategory"sv, "None"sv, move(unicode_data.general_categories), move(unicode_data.general_category_unions), move(unicode_data.general_category_aliases), true);
|
||||
generate_enum("GeneralCategory"sv, "None"sv, unicode_data.general_categories, unicode_data.general_category_unions, unicode_data.general_category_aliases, true);
|
||||
generate_enum("Property"sv, "Assigned"sv, unicode_data.prop_list.keys(), {}, unicode_data.prop_aliases, true);
|
||||
generate_enum("WordBreakProperty"sv, "Other"sv, unicode_data.word_break_prop_list.keys());
|
||||
|
||||
|
@ -541,6 +541,7 @@ namespace Detail {
|
|||
|
||||
Optional<UnicodeData> unicode_data_for_code_point(u32 code_point);
|
||||
Optional<Property> property_from_string(StringView const& property);
|
||||
Optional<GeneralCategory> general_category_from_string(StringView const& general_category);
|
||||
|
||||
}
|
||||
|
||||
|
@ -716,6 +717,32 @@ Optional<Property> property_from_string(StringView const& property)
|
|||
return {};
|
||||
}
|
||||
|
||||
Optional<GeneralCategory> general_category_from_string(StringView const& general_category)
|
||||
{)~~~");
|
||||
|
||||
for (auto const& general_category : unicode_data.general_categories) {
|
||||
generator.set("general_category", general_category);
|
||||
generator.append(R"~~~(
|
||||
if (general_category == "@general_category@"sv)
|
||||
return GeneralCategory::@general_category@;)~~~");
|
||||
}
|
||||
for (auto const& union_ : unicode_data.general_category_unions) {
|
||||
generator.set("general_category", union_.alias);
|
||||
generator.append(R"~~~(
|
||||
if (general_category == "@general_category@"sv)
|
||||
return GeneralCategory::@general_category@;)~~~");
|
||||
}
|
||||
for (auto const& alias : unicode_data.general_category_aliases) {
|
||||
generator.set("general_category", alias.alias);
|
||||
generator.append(R"~~~(
|
||||
if (general_category == "@general_category@"sv)
|
||||
return GeneralCategory::@general_category@;)~~~");
|
||||
}
|
||||
|
||||
generator.append(R"~~~(
|
||||
return {};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
})~~~");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue