diff --git a/Meta/Lagom/Tools/CodeGenerators/LibLocale/GenerateNumberFormatData.cpp b/Meta/Lagom/Tools/CodeGenerators/LibLocale/GenerateNumberFormatData.cpp index 0451b5c9894..237de7b33a0 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibLocale/GenerateNumberFormatData.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibLocale/GenerateNumberFormatData.cpp @@ -638,10 +638,7 @@ static ErrorOr parse_units(String locale_units_path, CLDR& cldr, LocaleDat // LibUnicode generally tries to avoid being directly dependent on ECMA-402, but this rather significantly reduces the amount // of data generated here, and ECMA-402 is currently the only consumer of this data. constexpr auto sanctioned_units = JS::Intl::sanctioned_single_unit_identifiers(); - if (find(sanctioned_units.begin(), sanctioned_units.end(), unit_name) != sanctioned_units.end()) - return true; - static constexpr auto extra_sanctioned_units = JS::Intl::extra_sanctioned_single_unit_identifiers(); - return find(extra_sanctioned_units.begin(), extra_sanctioned_units.end(), unit_name) != extra_sanctioned_units.end(); + return find(sanctioned_units.begin(), sanctioned_units.end(), unit_name) != sanctioned_units.end(); }; auto parse_units_object = [&](auto const& units_object, Locale::Style style) { diff --git a/Userland/Libraries/LibJS/Runtime/Intl/SingleUnitIdentifiers.h b/Userland/Libraries/LibJS/Runtime/Intl/SingleUnitIdentifiers.h index 624ed060e91..dbed1e11ac8 100644 --- a/Userland/Libraries/LibJS/Runtime/Intl/SingleUnitIdentifiers.h +++ b/Userland/Libraries/LibJS/Runtime/Intl/SingleUnitIdentifiers.h @@ -40,6 +40,7 @@ constexpr auto sanctioned_single_unit_identifiers() "megabit"sv, "megabyte"sv, "meter"sv, + "microsecond"sv, "mile"sv, "mile-scandinavian"sv, "milliliter"sv, @@ -47,6 +48,7 @@ constexpr auto sanctioned_single_unit_identifiers() "millisecond"sv, "minute"sv, "month"sv, + "nanosecond"sv, "ounce"sv, "percent"sv, "petabyte"sv, @@ -61,10 +63,4 @@ constexpr auto sanctioned_single_unit_identifiers() }; } -// Additional single units used in ECMAScript required by the Intl.DurationFormat proposal -constexpr auto extra_sanctioned_single_unit_identifiers() -{ - return AK::Array { "microsecond"sv, "nanosecond"sv }; -} - } diff --git a/Userland/Libraries/LibJS/Tests/builtins/Intl/NumberFormat/NumberFormat.prototype.format.js b/Userland/Libraries/LibJS/Tests/builtins/Intl/NumberFormat/NumberFormat.prototype.format.js index 68d2d22f368..597c7f652ca 100644 --- a/Userland/Libraries/LibJS/Tests/builtins/Intl/NumberFormat/NumberFormat.prototype.format.js +++ b/Userland/Libraries/LibJS/Tests/builtins/Intl/NumberFormat/NumberFormat.prototype.format.js @@ -1518,6 +1518,15 @@ describe("style=unit", () => { expect(en2.format(1.2)).toBe("1.2 kilometers per hour"); expect(en2.format(123)).toBe("123 kilometers per hour"); + const en3 = new Intl.NumberFormat("en", { + style: "unit", + unit: "nanosecond", + unitDisplay: "long", + }); + expect(en3.format(1)).toBe("1 nanosecond"); + expect(en3.format(1.2)).toBe("1.2 nanoseconds"); + expect(en3.format(123)).toBe("123 nanoseconds"); + const ar = new Intl.NumberFormat("ar", { style: "unit", unit: "foot", @@ -1556,6 +1565,15 @@ describe("style=unit", () => { expect(en2.format(1.2)).toBe("1.2 km/h"); expect(en2.format(123)).toBe("123 km/h"); + const en3 = new Intl.NumberFormat("en", { + style: "unit", + unit: "nanosecond", + unitDisplay: "short", + }); + expect(en3.format(1)).toBe("1 ns"); + expect(en3.format(1.2)).toBe("1.2 ns"); + expect(en3.format(123)).toBe("123 ns"); + const ar = new Intl.NumberFormat("ar", { style: "unit", unit: "foot", @@ -1594,6 +1612,15 @@ describe("style=unit", () => { expect(en2.format(1.2)).toBe("1.2km/h"); expect(en2.format(123)).toBe("123km/h"); + const en3 = new Intl.NumberFormat("en", { + style: "unit", + unit: "nanosecond", + unitDisplay: "narrow", + }); + expect(en3.format(1)).toBe("1ns"); + expect(en3.format(1.2)).toBe("1.2ns"); + expect(en3.format(123)).toBe("123ns"); + const ar = new Intl.NumberFormat("ar", { style: "unit", unit: "foot",