mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 08:58:11 +00:00
LibUnicode: Parse and generate standard accounting formatting rules
Also known as "currency-accounting" in some CLDR documentation.
This commit is contained in:
parent
967afc1b84
commit
1244ebcd4f
2 changed files with 10 additions and 0 deletions
|
@ -58,6 +58,7 @@ struct NumberSystem {
|
||||||
Vector<NumberFormat> decimal_long_formats {};
|
Vector<NumberFormat> decimal_long_formats {};
|
||||||
Vector<NumberFormat> decimal_short_formats {};
|
Vector<NumberFormat> decimal_short_formats {};
|
||||||
NumberFormat currency_format {};
|
NumberFormat currency_format {};
|
||||||
|
NumberFormat accounting_format {};
|
||||||
Vector<NumberFormat> currency_short_formats {};
|
Vector<NumberFormat> currency_short_formats {};
|
||||||
NumberFormat percent_format {};
|
NumberFormat percent_format {};
|
||||||
};
|
};
|
||||||
|
@ -593,6 +594,9 @@ static void parse_number_systems(String locale_numbers_path, UnicodeLocaleData&
|
||||||
auto format_object = value.as_object().get("standard"sv);
|
auto format_object = value.as_object().get("standard"sv);
|
||||||
number_system.currency_format.format_index = ensure_unique_string(locale_data, format_object.as_string());
|
number_system.currency_format.format_index = ensure_unique_string(locale_data, format_object.as_string());
|
||||||
|
|
||||||
|
format_object = value.as_object().get("accounting"sv);
|
||||||
|
number_system.accounting_format.format_index = ensure_unique_string(locale_data, format_object.as_string());
|
||||||
|
|
||||||
if (value.as_object().has("short"sv)) {
|
if (value.as_object().has("short"sv)) {
|
||||||
auto const& short_format = value.as_object().get("short"sv).as_object().get("standard"sv);
|
auto const& short_format = value.as_object().get("short"sv).as_object().get("standard"sv);
|
||||||
number_system.currency_short_formats = parse_number_format(short_format.as_object());
|
number_system.currency_short_formats = parse_number_format(short_format.as_object());
|
||||||
|
@ -928,6 +932,7 @@ struct NumberSystem {
|
||||||
Span<NumberFormat const> decimal_long_formats {};
|
Span<NumberFormat const> decimal_long_formats {};
|
||||||
Span<NumberFormat const> decimal_short_formats {};
|
Span<NumberFormat const> decimal_short_formats {};
|
||||||
NumberFormat currency_format {};
|
NumberFormat currency_format {};
|
||||||
|
NumberFormat accounting_format {};
|
||||||
Span<NumberFormat const> currency_short_formats {};
|
Span<NumberFormat const> currency_short_formats {};
|
||||||
NumberFormat percent_format {};
|
NumberFormat percent_format {};
|
||||||
};
|
};
|
||||||
|
@ -1060,6 +1065,8 @@ static constexpr Array<NumberSystem, @size@> @name@ { {)~~~");
|
||||||
append_number_format(number_system.value.decimal_format);
|
append_number_format(number_system.value.decimal_format);
|
||||||
generator.append(" @decimal_long_formats@.span(), @decimal_short_formats@.span(), ");
|
generator.append(" @decimal_long_formats@.span(), @decimal_short_formats@.span(), ");
|
||||||
append_number_format(number_system.value.currency_format);
|
append_number_format(number_system.value.currency_format);
|
||||||
|
generator.append(" ");
|
||||||
|
append_number_format(number_system.value.accounting_format);
|
||||||
generator.append(" @currency_short_formats@.span(), ");
|
generator.append(" @currency_short_formats@.span(), ");
|
||||||
append_number_format(number_system.value.percent_format);
|
append_number_format(number_system.value.percent_format);
|
||||||
generator.append(" },");
|
generator.append(" },");
|
||||||
|
@ -1438,6 +1445,8 @@ Optional<Unicode::NumberFormat> get_standard_number_system_format(StringView loc
|
||||||
return number_system->decimal_format.to_unicode_number_format();
|
return number_system->decimal_format.to_unicode_number_format();
|
||||||
case StandardNumberFormatType::Currency:
|
case StandardNumberFormatType::Currency:
|
||||||
return number_system->currency_format.to_unicode_number_format();
|
return number_system->currency_format.to_unicode_number_format();
|
||||||
|
case StandardNumberFormatType::Accounting:
|
||||||
|
return number_system->accounting_format.to_unicode_number_format();
|
||||||
case StandardNumberFormatType::Percent:
|
case StandardNumberFormatType::Percent:
|
||||||
return number_system->percent_format.to_unicode_number_format();
|
return number_system->percent_format.to_unicode_number_format();
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,6 +81,7 @@ struct LocaleID {
|
||||||
enum class StandardNumberFormatType : u8 {
|
enum class StandardNumberFormatType : u8 {
|
||||||
Decimal,
|
Decimal,
|
||||||
Currency,
|
Currency,
|
||||||
|
Accounting,
|
||||||
Percent,
|
Percent,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue