mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:17:34 +00:00
LibJS: Set approximate number range format result's "source" to "shared"
This is a normative change in the Intl.NumberFormat v3 spec. See:
7510e7f
This commit is contained in:
parent
9b6fcd8591
commit
d1881da2be
2 changed files with 25 additions and 14 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2021-2022, Tim Flynn <trflynn89@serenityos.org>
|
* Copyright (c) 2021-2023, Tim Flynn <trflynn89@serenityos.org>
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-2-Clause
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -1744,9 +1744,20 @@ ThrowCompletionOr<Vector<PatternPartitionWithSource>> partition_number_range_pat
|
||||||
auto raw_end_result = partition_number_pattern(vm, number_format, move(end));
|
auto raw_end_result = partition_number_pattern(vm, number_format, move(end));
|
||||||
auto end_result = PatternPartitionWithSource::create_from_parent_list(move(raw_end_result));
|
auto end_result = PatternPartitionWithSource::create_from_parent_list(move(raw_end_result));
|
||||||
|
|
||||||
// 5. If xResult is equal to yResult, return FormatApproximately(numberFormat, xResult).
|
// 5. If xResult is equal to yResult, then
|
||||||
if (start_result == end_result)
|
if (start_result == end_result) {
|
||||||
return format_approximately(number_format, move(start_result));
|
// a. Let appxResult be ? FormatApproximately(numberFormat, xResult).
|
||||||
|
auto approximate_result = format_approximately(number_format, move(start_result));
|
||||||
|
|
||||||
|
// b. For each r in appxResult, do
|
||||||
|
for (auto& result : approximate_result) {
|
||||||
|
// i. Set r.[[Source]] to "shared".
|
||||||
|
result.source = "shared"sv;
|
||||||
|
}
|
||||||
|
|
||||||
|
// c. Return appxResult.
|
||||||
|
return approximate_result;
|
||||||
|
}
|
||||||
|
|
||||||
// 6. For each r in xResult, do
|
// 6. For each r in xResult, do
|
||||||
for (auto& part : start_result) {
|
for (auto& part : start_result) {
|
||||||
|
|
|
@ -56,8 +56,8 @@ describe("correct behavior", () => {
|
||||||
test("approximately formatting", () => {
|
test("approximately formatting", () => {
|
||||||
const en1 = new Intl.NumberFormat("en", { maximumFractionDigits: 0 });
|
const en1 = new Intl.NumberFormat("en", { maximumFractionDigits: 0 });
|
||||||
expect(en1.formatRangeToParts(2.9, 3.1)).toEqual([
|
expect(en1.formatRangeToParts(2.9, 3.1)).toEqual([
|
||||||
{ type: "approximatelySign", value: "~", source: "" },
|
{ type: "approximatelySign", value: "~", source: "shared" },
|
||||||
{ type: "integer", value: "3", source: "" },
|
{ type: "integer", value: "3", source: "shared" },
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const en2 = new Intl.NumberFormat("en", {
|
const en2 = new Intl.NumberFormat("en", {
|
||||||
|
@ -66,15 +66,15 @@ describe("correct behavior", () => {
|
||||||
maximumFractionDigits: 0,
|
maximumFractionDigits: 0,
|
||||||
});
|
});
|
||||||
expect(en2.formatRangeToParts(2.9, 3.1)).toEqual([
|
expect(en2.formatRangeToParts(2.9, 3.1)).toEqual([
|
||||||
{ type: "approximatelySign", value: "~", source: "" },
|
{ type: "approximatelySign", value: "~", source: "shared" },
|
||||||
{ type: "currency", value: "$", source: "" },
|
{ type: "currency", value: "$", source: "shared" },
|
||||||
{ type: "integer", value: "3", source: "" },
|
{ type: "integer", value: "3", source: "shared" },
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const ja1 = new Intl.NumberFormat("ja", { maximumFractionDigits: 0 });
|
const ja1 = new Intl.NumberFormat("ja", { maximumFractionDigits: 0 });
|
||||||
expect(ja1.formatRangeToParts(2.9, 3.1)).toEqual([
|
expect(ja1.formatRangeToParts(2.9, 3.1)).toEqual([
|
||||||
{ type: "approximatelySign", value: "約", source: "" },
|
{ type: "approximatelySign", value: "約", source: "shared" },
|
||||||
{ type: "integer", value: "3", source: "" },
|
{ type: "integer", value: "3", source: "shared" },
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const ja2 = new Intl.NumberFormat("ja", {
|
const ja2 = new Intl.NumberFormat("ja", {
|
||||||
|
@ -83,9 +83,9 @@ describe("correct behavior", () => {
|
||||||
maximumFractionDigits: 0,
|
maximumFractionDigits: 0,
|
||||||
});
|
});
|
||||||
expect(ja2.formatRangeToParts(2.9, 3.1)).toEqual([
|
expect(ja2.formatRangeToParts(2.9, 3.1)).toEqual([
|
||||||
{ type: "approximatelySign", value: "約", source: "" },
|
{ type: "approximatelySign", value: "約", source: "shared" },
|
||||||
{ type: "currency", value: "¥", source: "" },
|
{ type: "currency", value: "¥", source: "shared" },
|
||||||
{ type: "integer", value: "3", source: "" },
|
{ type: "integer", value: "3", source: "shared" },
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue