mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 16:47:36 +00:00
LibLocale: Migrate code generators to Directory::for_each_entry()
This commit is contained in:
parent
8a8ad81aa1
commit
414cafa7f8
5 changed files with 63 additions and 66 deletions
|
@ -23,7 +23,7 @@
|
||||||
#include <AK/Traits.h>
|
#include <AK/Traits.h>
|
||||||
#include <AK/Utf8View.h>
|
#include <AK/Utf8View.h>
|
||||||
#include <LibCore/ArgsParser.h>
|
#include <LibCore/ArgsParser.h>
|
||||||
#include <LibCore/DirIterator.h>
|
#include <LibCore/Directory.h>
|
||||||
#include <LibLocale/DateTimeFormat.h>
|
#include <LibLocale/DateTimeFormat.h>
|
||||||
#include <LibTimeZone/TimeZone.h>
|
#include <LibTimeZone/TimeZone.h>
|
||||||
|
|
||||||
|
@ -1654,8 +1654,6 @@ static ErrorOr<void> parse_all_locales(DeprecatedString core_path, DeprecatedStr
|
||||||
TRY(parse_week_data(core_path, cldr));
|
TRY(parse_week_data(core_path, cldr));
|
||||||
TRY(parse_meta_zones(core_path, cldr));
|
TRY(parse_meta_zones(core_path, cldr));
|
||||||
|
|
||||||
auto dates_iterator = TRY(path_to_dir_iterator(move(dates_path)));
|
|
||||||
|
|
||||||
auto remove_variants_from_path = [&](DeprecatedString path) -> ErrorOr<DeprecatedString> {
|
auto remove_variants_from_path = [&](DeprecatedString path) -> ErrorOr<DeprecatedString> {
|
||||||
auto parsed_locale = TRY(CanonicalLanguageID::parse(cldr.unique_strings, LexicalPath::basename(path)));
|
auto parsed_locale = TRY(CanonicalLanguageID::parse(cldr.unique_strings, LexicalPath::basename(path)));
|
||||||
|
|
||||||
|
@ -1669,20 +1667,21 @@ static ErrorOr<void> parse_all_locales(DeprecatedString core_path, DeprecatedStr
|
||||||
return builder.to_deprecated_string();
|
return builder.to_deprecated_string();
|
||||||
};
|
};
|
||||||
|
|
||||||
while (dates_iterator.has_next()) {
|
TRY(Core::Directory::for_each_entry(TRY(String::formatted("{}/main", dates_path)), Core::DirIterator::SkipParentAndBaseDir, [&](auto& entry, auto& directory) -> ErrorOr<IterationDecision> {
|
||||||
auto dates_path = TRY(next_path_from_dir_iterator(dates_iterator));
|
auto dates_path = LexicalPath::join(directory.path().string(), entry.name).string();
|
||||||
auto calendars_iterator = TRY(path_to_dir_iterator(dates_path, {}));
|
|
||||||
|
|
||||||
auto language = TRY(remove_variants_from_path(dates_path));
|
auto language = TRY(remove_variants_from_path(dates_path));
|
||||||
auto& locale = cldr.locales.ensure(language);
|
auto& locale = cldr.locales.ensure(language);
|
||||||
|
|
||||||
while (calendars_iterator.has_next()) {
|
TRY(Core::Directory::for_each_entry(dates_path, Core::DirIterator::SkipParentAndBaseDir, [&](auto& dates_entry, auto& dates_directory) -> ErrorOr<IterationDecision> {
|
||||||
auto calendars_path = TRY(next_path_from_dir_iterator(calendars_iterator));
|
auto calendars_path = LexicalPath::join(dates_directory.path().string(), dates_entry.name).string();
|
||||||
TRY(parse_calendars(move(calendars_path), cldr, locale));
|
TRY(parse_calendars(move(calendars_path), cldr, locale));
|
||||||
}
|
return IterationDecision::Continue;
|
||||||
|
}));
|
||||||
|
|
||||||
TRY(parse_time_zone_names(move(dates_path), cldr, locale));
|
TRY(parse_time_zone_names(move(dates_path), cldr, locale));
|
||||||
}
|
return IterationDecision::Continue;
|
||||||
|
}));
|
||||||
|
|
||||||
TRY(parse_day_periods(move(core_path), cldr));
|
TRY(parse_day_periods(move(core_path), cldr));
|
||||||
return {};
|
return {};
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
#include <AK/StringBuilder.h>
|
#include <AK/StringBuilder.h>
|
||||||
#include <LibCore/ArgsParser.h>
|
#include <LibCore/ArgsParser.h>
|
||||||
#include <LibCore/DeprecatedFile.h>
|
#include <LibCore/DeprecatedFile.h>
|
||||||
#include <LibCore/DirIterator.h>
|
#include <LibCore/Directory.h>
|
||||||
|
|
||||||
static DeprecatedString format_identifier(StringView owner, DeprecatedString identifier)
|
static DeprecatedString format_identifier(StringView owner, DeprecatedString identifier)
|
||||||
{
|
{
|
||||||
|
@ -771,15 +771,14 @@ static ErrorOr<void> parse_number_system_keywords(DeprecatedString locale_number
|
||||||
|
|
||||||
static ErrorOr<void> parse_calendar_keywords(DeprecatedString locale_dates_path, CLDR& cldr, LocaleData& locale)
|
static ErrorOr<void> parse_calendar_keywords(DeprecatedString locale_dates_path, CLDR& cldr, LocaleData& locale)
|
||||||
{
|
{
|
||||||
auto calendars_iterator = TRY(path_to_dir_iterator(locale_dates_path, {}));
|
|
||||||
KeywordList keywords {};
|
KeywordList keywords {};
|
||||||
|
|
||||||
while (calendars_iterator.has_next()) {
|
TRY(Core::Directory::for_each_entry(locale_dates_path, Core::DirIterator::SkipParentAndBaseDir, [&](auto& entry, auto& directory) -> ErrorOr<IterationDecision> {
|
||||||
auto locale_calendars_path = TRY(next_path_from_dir_iterator(calendars_iterator));
|
auto locale_calendars_path = LexicalPath::join(directory.path().string(), entry.name).string();
|
||||||
|
|
||||||
LexicalPath calendars_path(move(locale_calendars_path));
|
LexicalPath calendars_path(move(locale_calendars_path));
|
||||||
if (!calendars_path.basename().starts_with("ca-"sv))
|
if (!calendars_path.basename().starts_with("ca-"sv))
|
||||||
continue;
|
return IterationDecision::Continue;
|
||||||
|
|
||||||
auto calendars = TRY(read_json_file(calendars_path.string()));
|
auto calendars = TRY(read_json_file(calendars_path.string()));
|
||||||
auto const& main_object = calendars.as_object().get_object("main"sv).value();
|
auto const& main_object = calendars.as_object().get_object("main"sv).value();
|
||||||
|
@ -798,7 +797,9 @@ static ErrorOr<void> parse_calendar_keywords(DeprecatedString locale_dates_path,
|
||||||
|
|
||||||
keywords.append(cldr.unique_strings.ensure(calendar_name));
|
keywords.append(cldr.unique_strings.ensure(calendar_name));
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
return IterationDecision::Continue;
|
||||||
|
}));
|
||||||
|
|
||||||
locale.calendar_keywords = cldr.unique_keyword_lists.ensure(move(keywords));
|
locale.calendar_keywords = cldr.unique_keyword_lists.ensure(move(keywords));
|
||||||
return {};
|
return {};
|
||||||
|
@ -910,14 +911,6 @@ static ErrorOr<void> define_aliases_without_scripts(CLDR& cldr)
|
||||||
|
|
||||||
static ErrorOr<void> parse_all_locales(DeprecatedString bcp47_path, DeprecatedString core_path, DeprecatedString locale_names_path, DeprecatedString misc_path, DeprecatedString numbers_path, DeprecatedString dates_path, CLDR& cldr)
|
static ErrorOr<void> parse_all_locales(DeprecatedString bcp47_path, DeprecatedString core_path, DeprecatedString locale_names_path, DeprecatedString misc_path, DeprecatedString numbers_path, DeprecatedString dates_path, CLDR& cldr)
|
||||||
{
|
{
|
||||||
auto bcp47_iterator = TRY(path_to_dir_iterator(move(bcp47_path), "bcp47"sv));
|
|
||||||
auto identity_iterator = TRY(path_to_dir_iterator(locale_names_path));
|
|
||||||
auto preprocess_iterator = TRY(path_to_dir_iterator(locale_names_path));
|
|
||||||
auto locale_names_iterator = TRY(path_to_dir_iterator(move(locale_names_path)));
|
|
||||||
auto misc_iterator = TRY(path_to_dir_iterator(move(misc_path)));
|
|
||||||
auto numbers_iterator = TRY(path_to_dir_iterator(move(numbers_path)));
|
|
||||||
auto dates_iterator = TRY(path_to_dir_iterator(move(dates_path)));
|
|
||||||
|
|
||||||
LexicalPath core_supplemental_path(core_path);
|
LexicalPath core_supplemental_path(core_path);
|
||||||
core_supplemental_path = core_supplemental_path.append("supplemental"sv);
|
core_supplemental_path = core_supplemental_path.append("supplemental"sv);
|
||||||
VERIFY(Core::DeprecatedFile::is_directory(core_supplemental_path.string()));
|
VERIFY(Core::DeprecatedFile::is_directory(core_supplemental_path.string()));
|
||||||
|
@ -938,30 +931,33 @@ static ErrorOr<void> parse_all_locales(DeprecatedString bcp47_path, DeprecatedSt
|
||||||
return builder.to_deprecated_string();
|
return builder.to_deprecated_string();
|
||||||
};
|
};
|
||||||
|
|
||||||
while (identity_iterator.has_next()) {
|
TRY(Core::Directory::for_each_entry(TRY(String::formatted("{}/main", locale_names_path)), Core::DirIterator::SkipParentAndBaseDir, [&](auto& entry, auto& directory) -> ErrorOr<IterationDecision> {
|
||||||
auto locale_path = TRY(next_path_from_dir_iterator(identity_iterator));
|
auto locale_path = LexicalPath::join(directory.path().string(), entry.name).string();
|
||||||
auto language = TRY(remove_variants_from_path(locale_path));
|
auto language = TRY(remove_variants_from_path(locale_path));
|
||||||
|
|
||||||
auto& locale = cldr.locales.ensure(language);
|
auto& locale = cldr.locales.ensure(language);
|
||||||
TRY(parse_identity(locale_path, cldr, locale));
|
TRY(parse_identity(locale_path, cldr, locale));
|
||||||
}
|
return IterationDecision::Continue;
|
||||||
|
}));
|
||||||
|
|
||||||
while (preprocess_iterator.has_next()) {
|
TRY(Core::Directory::for_each_entry(TRY(String::formatted("{}/main", locale_names_path)), Core::DirIterator::SkipParentAndBaseDir, [&](auto& entry, auto& directory) -> ErrorOr<IterationDecision> {
|
||||||
auto locale_path = TRY(next_path_from_dir_iterator(preprocess_iterator));
|
auto locale_path = LexicalPath::join(directory.path().string(), entry.name).string();
|
||||||
TRY(preprocess_languages(locale_path, cldr));
|
TRY(preprocess_languages(locale_path, cldr));
|
||||||
}
|
return IterationDecision::Continue;
|
||||||
|
}));
|
||||||
|
|
||||||
quick_sort(cldr.languages);
|
quick_sort(cldr.languages);
|
||||||
quick_sort(cldr.territories);
|
quick_sort(cldr.territories);
|
||||||
quick_sort(cldr.scripts);
|
quick_sort(cldr.scripts);
|
||||||
|
|
||||||
while (bcp47_iterator.has_next()) {
|
TRY(Core::Directory::for_each_entry(TRY(String::formatted("{}/bcp47", bcp47_path)), Core::DirIterator::SkipParentAndBaseDir, [&](auto& entry, auto& directory) -> ErrorOr<IterationDecision> {
|
||||||
auto bcp47_path = TRY(next_path_from_dir_iterator(bcp47_iterator));
|
auto bcp47_path = LexicalPath::join(directory.path().string(), entry.name).string();
|
||||||
TRY(parse_unicode_extension_keywords(move(bcp47_path), cldr));
|
TRY(parse_unicode_extension_keywords(move(bcp47_path), cldr));
|
||||||
}
|
return IterationDecision::Continue;
|
||||||
|
}));
|
||||||
|
|
||||||
while (locale_names_iterator.has_next()) {
|
TRY(Core::Directory::for_each_entry(TRY(String::formatted("{}/main", locale_names_path)), Core::DirIterator::SkipParentAndBaseDir, [&](auto& entry, auto& directory) -> ErrorOr<IterationDecision> {
|
||||||
auto locale_path = TRY(next_path_from_dir_iterator(locale_names_iterator));
|
auto locale_path = LexicalPath::join(directory.path().string(), entry.name).string();
|
||||||
auto language = TRY(remove_variants_from_path(locale_path));
|
auto language = TRY(remove_variants_from_path(locale_path));
|
||||||
|
|
||||||
auto& locale = cldr.locales.ensure(language);
|
auto& locale = cldr.locales.ensure(language);
|
||||||
|
@ -970,35 +966,39 @@ static ErrorOr<void> parse_all_locales(DeprecatedString bcp47_path, DeprecatedSt
|
||||||
TRY(parse_locale_territories(locale_path, cldr, locale));
|
TRY(parse_locale_territories(locale_path, cldr, locale));
|
||||||
TRY(parse_locale_scripts(locale_path, cldr, locale));
|
TRY(parse_locale_scripts(locale_path, cldr, locale));
|
||||||
TRY(parse_locale_calendars(locale_path, cldr, locale));
|
TRY(parse_locale_calendars(locale_path, cldr, locale));
|
||||||
}
|
return IterationDecision::Continue;
|
||||||
|
}));
|
||||||
|
|
||||||
while (misc_iterator.has_next()) {
|
TRY(Core::Directory::for_each_entry(TRY(String::formatted("{}/main", misc_path)), Core::DirIterator::SkipParentAndBaseDir, [&](auto& entry, auto& directory) -> ErrorOr<IterationDecision> {
|
||||||
auto misc_path = TRY(next_path_from_dir_iterator(misc_iterator));
|
auto misc_path = LexicalPath::join(directory.path().string(), entry.name).string();
|
||||||
auto language = TRY(remove_variants_from_path(misc_path));
|
auto language = TRY(remove_variants_from_path(misc_path));
|
||||||
|
|
||||||
auto& locale = cldr.locales.ensure(language);
|
auto& locale = cldr.locales.ensure(language);
|
||||||
TRY(parse_locale_list_patterns(misc_path, cldr, locale));
|
TRY(parse_locale_list_patterns(misc_path, cldr, locale));
|
||||||
TRY(parse_locale_layout(misc_path, cldr, locale));
|
TRY(parse_locale_layout(misc_path, cldr, locale));
|
||||||
}
|
return IterationDecision::Continue;
|
||||||
|
}));
|
||||||
|
|
||||||
while (numbers_iterator.has_next()) {
|
TRY(Core::Directory::for_each_entry(TRY(String::formatted("{}/main", numbers_path)), Core::DirIterator::SkipParentAndBaseDir, [&](auto& entry, auto& directory) -> ErrorOr<IterationDecision> {
|
||||||
auto numbers_path = TRY(next_path_from_dir_iterator(numbers_iterator));
|
auto numbers_path = LexicalPath::join(directory.path().string(), entry.name).string();
|
||||||
auto language = TRY(remove_variants_from_path(numbers_path));
|
auto language = TRY(remove_variants_from_path(numbers_path));
|
||||||
|
|
||||||
auto& locale = cldr.locales.ensure(language);
|
auto& locale = cldr.locales.ensure(language);
|
||||||
TRY(parse_locale_currencies(numbers_path, cldr, locale));
|
TRY(parse_locale_currencies(numbers_path, cldr, locale));
|
||||||
TRY(parse_number_system_keywords(numbers_path, cldr, locale));
|
TRY(parse_number_system_keywords(numbers_path, cldr, locale));
|
||||||
fill_in_collation_keywords(cldr, locale);
|
fill_in_collation_keywords(cldr, locale);
|
||||||
}
|
return IterationDecision::Continue;
|
||||||
|
}));
|
||||||
|
|
||||||
while (dates_iterator.has_next()) {
|
TRY(Core::Directory::for_each_entry(TRY(String::formatted("{}/main", dates_path)), Core::DirIterator::SkipParentAndBaseDir, [&](auto& entry, auto& directory) -> ErrorOr<IterationDecision> {
|
||||||
auto dates_path = TRY(next_path_from_dir_iterator(dates_iterator));
|
auto dates_path = LexicalPath::join(directory.path().string(), entry.name).string();
|
||||||
auto language = TRY(remove_variants_from_path(dates_path));
|
auto language = TRY(remove_variants_from_path(dates_path));
|
||||||
|
|
||||||
auto& locale = cldr.locales.ensure(language);
|
auto& locale = cldr.locales.ensure(language);
|
||||||
TRY(parse_locale_date_fields(dates_path, cldr, locale));
|
TRY(parse_locale_date_fields(dates_path, cldr, locale));
|
||||||
TRY(parse_calendar_keywords(dates_path, cldr, locale));
|
TRY(parse_calendar_keywords(dates_path, cldr, locale));
|
||||||
}
|
return IterationDecision::Continue;
|
||||||
|
}));
|
||||||
|
|
||||||
TRY(parse_default_content_locales(move(core_path), cldr));
|
TRY(parse_default_content_locales(move(core_path), cldr));
|
||||||
TRY(define_aliases_without_scripts(cldr));
|
TRY(define_aliases_without_scripts(cldr));
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
#include <AK/Utf8View.h>
|
#include <AK/Utf8View.h>
|
||||||
#include <LibCore/ArgsParser.h>
|
#include <LibCore/ArgsParser.h>
|
||||||
#include <LibCore/DeprecatedFile.h>
|
#include <LibCore/DeprecatedFile.h>
|
||||||
#include <LibCore/DirIterator.h>
|
#include <LibCore/Directory.h>
|
||||||
#include <LibJS/Runtime/Intl/SingleUnitIdentifiers.h>
|
#include <LibJS/Runtime/Intl/SingleUnitIdentifiers.h>
|
||||||
#include <LibLocale/Locale.h>
|
#include <LibLocale/Locale.h>
|
||||||
#include <LibLocale/NumberFormat.h>
|
#include <LibLocale/NumberFormat.h>
|
||||||
|
@ -698,9 +698,6 @@ static ErrorOr<void> parse_units(DeprecatedString locale_units_path, CLDR& cldr,
|
||||||
|
|
||||||
static ErrorOr<void> parse_all_locales(DeprecatedString core_path, DeprecatedString numbers_path, DeprecatedString units_path, CLDR& cldr)
|
static ErrorOr<void> parse_all_locales(DeprecatedString core_path, DeprecatedString numbers_path, DeprecatedString units_path, CLDR& cldr)
|
||||||
{
|
{
|
||||||
auto numbers_iterator = TRY(path_to_dir_iterator(move(numbers_path)));
|
|
||||||
auto units_iterator = TRY(path_to_dir_iterator(move(units_path)));
|
|
||||||
|
|
||||||
LexicalPath core_supplemental_path(move(core_path));
|
LexicalPath core_supplemental_path(move(core_path));
|
||||||
core_supplemental_path = core_supplemental_path.append("supplemental"sv);
|
core_supplemental_path = core_supplemental_path.append("supplemental"sv);
|
||||||
VERIFY(Core::DeprecatedFile::is_directory(core_supplemental_path.string()));
|
VERIFY(Core::DeprecatedFile::is_directory(core_supplemental_path.string()));
|
||||||
|
@ -720,21 +717,23 @@ static ErrorOr<void> parse_all_locales(DeprecatedString core_path, DeprecatedStr
|
||||||
return builder.to_deprecated_string();
|
return builder.to_deprecated_string();
|
||||||
};
|
};
|
||||||
|
|
||||||
while (numbers_iterator.has_next()) {
|
TRY(Core::Directory::for_each_entry(TRY(String::formatted("{}/main", numbers_path)), Core::DirIterator::SkipParentAndBaseDir, [&](auto& entry, auto& directory) -> ErrorOr<IterationDecision> {
|
||||||
auto numbers_path = TRY(next_path_from_dir_iterator(numbers_iterator));
|
auto numbers_path = LexicalPath::join(directory.path().string(), entry.name).string();
|
||||||
auto language = TRY(remove_variants_from_path(numbers_path));
|
auto language = TRY(remove_variants_from_path(numbers_path));
|
||||||
|
|
||||||
auto& locale = cldr.locales.ensure(language);
|
auto& locale = cldr.locales.ensure(language);
|
||||||
TRY(parse_number_systems(numbers_path, cldr, locale));
|
TRY(parse_number_systems(numbers_path, cldr, locale));
|
||||||
}
|
return IterationDecision::Continue;
|
||||||
|
}));
|
||||||
|
|
||||||
while (units_iterator.has_next()) {
|
TRY(Core::Directory::for_each_entry(TRY(String::formatted("{}/main", units_path)), Core::DirIterator::SkipParentAndBaseDir, [&](auto& entry, auto& directory) -> ErrorOr<IterationDecision> {
|
||||||
auto units_path = TRY(next_path_from_dir_iterator(units_iterator));
|
auto units_path = LexicalPath::join(directory.path().string(), entry.name).string();
|
||||||
auto language = TRY(remove_variants_from_path(units_path));
|
auto language = TRY(remove_variants_from_path(units_path));
|
||||||
|
|
||||||
auto& locale = cldr.locales.ensure(language);
|
auto& locale = cldr.locales.ensure(language);
|
||||||
TRY(parse_units(units_path, cldr, locale));
|
TRY(parse_units(units_path, cldr, locale));
|
||||||
}
|
return IterationDecision::Continue;
|
||||||
|
}));
|
||||||
|
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#include <AK/Variant.h>
|
#include <AK/Variant.h>
|
||||||
#include <LibCore/ArgsParser.h>
|
#include <LibCore/ArgsParser.h>
|
||||||
#include <LibCore/DeprecatedFile.h>
|
#include <LibCore/DeprecatedFile.h>
|
||||||
|
#include <LibCore/Directory.h>
|
||||||
#include <LibLocale/PluralRules.h>
|
#include <LibLocale/PluralRules.h>
|
||||||
|
|
||||||
static DeprecatedString format_identifier(StringView owner, DeprecatedString identifier)
|
static DeprecatedString format_identifier(StringView owner, DeprecatedString identifier)
|
||||||
|
@ -393,8 +394,6 @@ static ErrorOr<void> parse_plural_ranges(DeprecatedString core_supplemental_path
|
||||||
|
|
||||||
static ErrorOr<void> parse_all_locales(DeprecatedString core_path, DeprecatedString locale_names_path, CLDR& cldr)
|
static ErrorOr<void> parse_all_locales(DeprecatedString core_path, DeprecatedString locale_names_path, CLDR& cldr)
|
||||||
{
|
{
|
||||||
auto identity_iterator = TRY(path_to_dir_iterator(move(locale_names_path)));
|
|
||||||
|
|
||||||
LexicalPath core_supplemental_path(move(core_path));
|
LexicalPath core_supplemental_path(move(core_path));
|
||||||
core_supplemental_path = core_supplemental_path.append("supplemental"sv);
|
core_supplemental_path = core_supplemental_path.append("supplemental"sv);
|
||||||
VERIFY(Core::DeprecatedFile::is_directory(core_supplemental_path.string()));
|
VERIFY(Core::DeprecatedFile::is_directory(core_supplemental_path.string()));
|
||||||
|
@ -412,12 +411,13 @@ static ErrorOr<void> parse_all_locales(DeprecatedString core_path, DeprecatedStr
|
||||||
return builder.to_deprecated_string();
|
return builder.to_deprecated_string();
|
||||||
};
|
};
|
||||||
|
|
||||||
while (identity_iterator.has_next()) {
|
TRY(Core::Directory::for_each_entry(TRY(String::formatted("{}/main", locale_names_path)), Core::DirIterator::SkipParentAndBaseDir, [&](auto& entry, auto& directory) -> ErrorOr<IterationDecision> {
|
||||||
auto locale_path = TRY(next_path_from_dir_iterator(identity_iterator));
|
auto locale_path = LexicalPath::join(directory.path().string(), entry.name).string();
|
||||||
auto language = TRY(remove_variants_from_path(locale_path));
|
auto language = TRY(remove_variants_from_path(locale_path));
|
||||||
|
|
||||||
cldr.locales.ensure(language);
|
cldr.locales.ensure(language);
|
||||||
}
|
return IterationDecision::Continue;
|
||||||
|
}));
|
||||||
|
|
||||||
TRY(parse_plural_rules(core_supplemental_path.string(), "plurals.json"sv, cldr));
|
TRY(parse_plural_rules(core_supplemental_path.string(), "plurals.json"sv, cldr));
|
||||||
TRY(parse_plural_rules(core_supplemental_path.string(), "ordinals.json"sv, cldr));
|
TRY(parse_plural_rules(core_supplemental_path.string(), "ordinals.json"sv, cldr));
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
#include <AK/SourceGenerator.h>
|
#include <AK/SourceGenerator.h>
|
||||||
#include <AK/StringBuilder.h>
|
#include <AK/StringBuilder.h>
|
||||||
#include <LibCore/ArgsParser.h>
|
#include <LibCore/ArgsParser.h>
|
||||||
#include <LibCore/DirIterator.h>
|
#include <LibCore/Directory.h>
|
||||||
#include <LibLocale/Locale.h>
|
#include <LibLocale/Locale.h>
|
||||||
#include <LibLocale/RelativeTimeFormat.h>
|
#include <LibLocale/RelativeTimeFormat.h>
|
||||||
|
|
||||||
|
@ -137,8 +137,6 @@ static ErrorOr<void> parse_date_fields(DeprecatedString locale_dates_path, CLDR&
|
||||||
|
|
||||||
static ErrorOr<void> parse_all_locales(DeprecatedString dates_path, CLDR& cldr)
|
static ErrorOr<void> parse_all_locales(DeprecatedString dates_path, CLDR& cldr)
|
||||||
{
|
{
|
||||||
auto dates_iterator = TRY(path_to_dir_iterator(move(dates_path)));
|
|
||||||
|
|
||||||
auto remove_variants_from_path = [&](DeprecatedString path) -> ErrorOr<DeprecatedString> {
|
auto remove_variants_from_path = [&](DeprecatedString path) -> ErrorOr<DeprecatedString> {
|
||||||
auto parsed_locale = TRY(CanonicalLanguageID::parse(cldr.unique_strings, LexicalPath::basename(path)));
|
auto parsed_locale = TRY(CanonicalLanguageID::parse(cldr.unique_strings, LexicalPath::basename(path)));
|
||||||
|
|
||||||
|
@ -152,13 +150,14 @@ static ErrorOr<void> parse_all_locales(DeprecatedString dates_path, CLDR& cldr)
|
||||||
return builder.to_deprecated_string();
|
return builder.to_deprecated_string();
|
||||||
};
|
};
|
||||||
|
|
||||||
while (dates_iterator.has_next()) {
|
TRY(Core::Directory::for_each_entry(TRY(String::formatted("{}/main", dates_path)), Core::DirIterator::SkipParentAndBaseDir, [&](auto& entry, auto& directory) -> ErrorOr<IterationDecision> {
|
||||||
auto dates_path = TRY(next_path_from_dir_iterator(dates_iterator));
|
auto dates_path = LexicalPath::join(directory.path().string(), entry.name).string();
|
||||||
auto language = TRY(remove_variants_from_path(dates_path));
|
auto language = TRY(remove_variants_from_path(dates_path));
|
||||||
|
|
||||||
auto& locale = cldr.locales.ensure(language);
|
auto& locale = cldr.locales.ensure(language);
|
||||||
TRY(parse_date_fields(move(dates_path), cldr, locale));
|
TRY(parse_date_fields(move(dates_path), cldr, locale));
|
||||||
}
|
return IterationDecision::Continue;
|
||||||
|
}));
|
||||||
|
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue