mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 00:07:34 +00:00
LibJS: Port to_temporal_rounding_mode() to String
Also make negate_temporal_rounding_mode() take a StringView as part of this, it only does equality checks.
This commit is contained in:
parent
ec9f2013c9
commit
3aa3ab65b1
6 changed files with 16 additions and 16 deletions
|
@ -184,7 +184,7 @@ ThrowCompletionOr<String> to_temporal_disambiguation(VM& vm, Object const* optio
|
||||||
}
|
}
|
||||||
|
|
||||||
// 13.6 ToTemporalRoundingMode ( normalizedOptions, fallback ), https://tc39.es/proposal-temporal/#sec-temporal-totemporalroundingmode
|
// 13.6 ToTemporalRoundingMode ( normalizedOptions, fallback ), https://tc39.es/proposal-temporal/#sec-temporal-totemporalroundingmode
|
||||||
ThrowCompletionOr<DeprecatedString> to_temporal_rounding_mode(VM& vm, Object const& normalized_options, DeprecatedString const& fallback)
|
ThrowCompletionOr<String> to_temporal_rounding_mode(VM& vm, Object const& normalized_options, StringView fallback)
|
||||||
{
|
{
|
||||||
// 1. Return ? GetOption(normalizedOptions, "roundingMode", "string", « "ceil", "floor", "expand", "trunc", "halfCeil", "halfFloor", "halfExpand", "halfTrunc", "halfEven" », fallback).
|
// 1. Return ? GetOption(normalizedOptions, "roundingMode", "string", « "ceil", "floor", "expand", "trunc", "halfCeil", "halfFloor", "halfExpand", "halfTrunc", "halfEven" », fallback).
|
||||||
auto option = TRY(get_option(
|
auto option = TRY(get_option(
|
||||||
|
@ -200,14 +200,14 @@ ThrowCompletionOr<DeprecatedString> to_temporal_rounding_mode(VM& vm, Object con
|
||||||
"halfTrunc"sv,
|
"halfTrunc"sv,
|
||||||
"halfEven"sv,
|
"halfEven"sv,
|
||||||
},
|
},
|
||||||
fallback.view()));
|
fallback));
|
||||||
|
|
||||||
VERIFY(option.is_string());
|
VERIFY(option.is_string());
|
||||||
return TRY(option.as_string().deprecated_string());
|
return option.as_string().utf8_string();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 13.7 NegateTemporalRoundingMode ( roundingMode ), https://tc39.es/proposal-temporal/#sec-temporal-negatetemporalroundingmode
|
// 13.7 NegateTemporalRoundingMode ( roundingMode ), https://tc39.es/proposal-temporal/#sec-temporal-negatetemporalroundingmode
|
||||||
StringView negate_temporal_rounding_mode(DeprecatedString const& rounding_mode)
|
StringView negate_temporal_rounding_mode(StringView rounding_mode)
|
||||||
{
|
{
|
||||||
// 1. If roundingMode is "ceil", return "floor".
|
// 1. If roundingMode is "ceil", return "floor".
|
||||||
if (rounding_mode == "ceil"sv)
|
if (rounding_mode == "ceil"sv)
|
||||||
|
@ -1850,7 +1850,7 @@ ThrowCompletionOr<DifferenceSettings> get_difference_settings(VM& vm, Difference
|
||||||
// 10. If operation is since, then
|
// 10. If operation is since, then
|
||||||
if (operation == DifferenceOperation::Since) {
|
if (operation == DifferenceOperation::Since) {
|
||||||
// a. Set roundingMode to ! NegateTemporalRoundingMode(roundingMode).
|
// a. Set roundingMode to ! NegateTemporalRoundingMode(roundingMode).
|
||||||
rounding_mode = negate_temporal_rounding_mode(rounding_mode);
|
rounding_mode = TRY_OR_THROW_OOM(vm, String::from_utf8(negate_temporal_rounding_mode(rounding_mode)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 11. Let maximum be ! MaximumTemporalDurationRoundingIncrement(smallestUnit).
|
// 11. Let maximum be ! MaximumTemporalDurationRoundingIncrement(smallestUnit).
|
||||||
|
@ -1863,7 +1863,7 @@ ThrowCompletionOr<DifferenceSettings> get_difference_settings(VM& vm, Difference
|
||||||
return DifferenceSettings {
|
return DifferenceSettings {
|
||||||
.smallest_unit = smallest_unit.release_value(),
|
.smallest_unit = smallest_unit.release_value(),
|
||||||
.largest_unit = largest_unit.release_value(),
|
.largest_unit = largest_unit.release_value(),
|
||||||
.rounding_mode = move(rounding_mode),
|
.rounding_mode = rounding_mode.to_deprecated_string(),
|
||||||
.rounding_increment = rounding_increment,
|
.rounding_increment = rounding_increment,
|
||||||
.options = *options,
|
.options = *options,
|
||||||
};
|
};
|
||||||
|
|
|
@ -137,8 +137,8 @@ ThrowCompletionOr<Object*> get_options_object(VM&, Value options);
|
||||||
ThrowCompletionOr<Value> get_option(VM&, Object const& options, PropertyKey const& property, OptionType type, Span<StringView const> values, OptionDefault const&);
|
ThrowCompletionOr<Value> get_option(VM&, Object const& options, PropertyKey const& property, OptionType type, Span<StringView const> values, OptionDefault const&);
|
||||||
ThrowCompletionOr<String> to_temporal_overflow(VM&, Object const* options);
|
ThrowCompletionOr<String> to_temporal_overflow(VM&, Object const* options);
|
||||||
ThrowCompletionOr<String> to_temporal_disambiguation(VM&, Object const* options);
|
ThrowCompletionOr<String> to_temporal_disambiguation(VM&, Object const* options);
|
||||||
ThrowCompletionOr<DeprecatedString> to_temporal_rounding_mode(VM&, Object const& normalized_options, DeprecatedString const& fallback);
|
ThrowCompletionOr<String> to_temporal_rounding_mode(VM&, Object const& normalized_options, StringView fallback);
|
||||||
StringView negate_temporal_rounding_mode(DeprecatedString const& rounding_mode);
|
StringView negate_temporal_rounding_mode(StringView rounding_mode);
|
||||||
ThrowCompletionOr<DeprecatedString> to_temporal_offset(VM&, Object const* options, DeprecatedString const& fallback);
|
ThrowCompletionOr<DeprecatedString> to_temporal_offset(VM&, Object const* options, DeprecatedString const& fallback);
|
||||||
ThrowCompletionOr<DeprecatedString> to_calendar_name_option(VM&, Object const& normalized_options);
|
ThrowCompletionOr<DeprecatedString> to_calendar_name_option(VM&, Object const& normalized_options);
|
||||||
ThrowCompletionOr<DeprecatedString> to_time_zone_name_option(VM&, Object const& normalized_options);
|
ThrowCompletionOr<DeprecatedString> to_time_zone_name_option(VM&, Object const& normalized_options);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2021-2022, Linus Groh <linusg@serenityos.org>
|
* Copyright (c) 2021-2023, Linus Groh <linusg@serenityos.org>
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-2-Clause
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -216,7 +216,7 @@ JS_DEFINE_NATIVE_FUNCTION(InstantPrototype::round)
|
||||||
auto& smallest_unit = *smallest_unit_value;
|
auto& smallest_unit = *smallest_unit_value;
|
||||||
|
|
||||||
// 7. Let roundingMode be ? ToTemporalRoundingMode(roundTo, "halfExpand").
|
// 7. Let roundingMode be ? ToTemporalRoundingMode(roundTo, "halfExpand").
|
||||||
auto rounding_mode = TRY(to_temporal_rounding_mode(vm, *round_to, "halfExpand"));
|
auto rounding_mode = TRY(to_temporal_rounding_mode(vm, *round_to, "halfExpand"sv));
|
||||||
|
|
||||||
double maximum;
|
double maximum;
|
||||||
// 8. If smallestUnit is "hour", then
|
// 8. If smallestUnit is "hour", then
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2021-2022, Linus Groh <linusg@serenityos.org>
|
* Copyright (c) 2021-2023, Linus Groh <linusg@serenityos.org>
|
||||||
* Copyright (c) 2021, Luke Wilde <lukew@serenityos.org>
|
* Copyright (c) 2021, Luke Wilde <lukew@serenityos.org>
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-2-Clause
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
@ -566,7 +566,7 @@ JS_DEFINE_NATIVE_FUNCTION(PlainDateTimePrototype::round)
|
||||||
auto smallest_unit = TRY(get_temporal_unit(vm, *round_to, vm.names.smallestUnit, UnitGroup::Time, TemporalUnitRequired {}, { "day"sv }));
|
auto smallest_unit = TRY(get_temporal_unit(vm, *round_to, vm.names.smallestUnit, UnitGroup::Time, TemporalUnitRequired {}, { "day"sv }));
|
||||||
|
|
||||||
// 7. Let roundingMode be ? ToTemporalRoundingMode(roundTo, "halfExpand").
|
// 7. Let roundingMode be ? ToTemporalRoundingMode(roundTo, "halfExpand").
|
||||||
auto rounding_mode = TRY(to_temporal_rounding_mode(vm, *round_to, "halfExpand"));
|
auto rounding_mode = TRY(to_temporal_rounding_mode(vm, *round_to, "halfExpand"sv));
|
||||||
|
|
||||||
// 8. Let roundingIncrement be ? ToTemporalDateTimeRoundingIncrement(roundTo, smallestUnit).
|
// 8. Let roundingIncrement be ? ToTemporalDateTimeRoundingIncrement(roundTo, smallestUnit).
|
||||||
auto rounding_increment = TRY(to_temporal_date_time_rounding_increment(vm, *round_to, *smallest_unit));
|
auto rounding_increment = TRY(to_temporal_date_time_rounding_increment(vm, *round_to, *smallest_unit));
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2021-2022, Linus Groh <linusg@serenityos.org>
|
* Copyright (c) 2021-2023, Linus Groh <linusg@serenityos.org>
|
||||||
* Copyright (c) 2021, Luke Wilde <lukew@serenityos.org>
|
* Copyright (c) 2021, Luke Wilde <lukew@serenityos.org>
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-2-Clause
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
@ -299,7 +299,7 @@ JS_DEFINE_NATIVE_FUNCTION(PlainTimePrototype::round)
|
||||||
auto smallest_unit = TRY(get_temporal_unit(vm, *round_to, vm.names.smallestUnit, UnitGroup::Time, TemporalUnitRequired {}));
|
auto smallest_unit = TRY(get_temporal_unit(vm, *round_to, vm.names.smallestUnit, UnitGroup::Time, TemporalUnitRequired {}));
|
||||||
|
|
||||||
// 7. Let roundingMode be ? ToTemporalRoundingMode(roundTo, "halfExpand").
|
// 7. Let roundingMode be ? ToTemporalRoundingMode(roundTo, "halfExpand").
|
||||||
auto rounding_mode = TRY(to_temporal_rounding_mode(vm, *round_to, "halfExpand"));
|
auto rounding_mode = TRY(to_temporal_rounding_mode(vm, *round_to, "halfExpand"sv));
|
||||||
|
|
||||||
// 8. Let maximum be ! MaximumTemporalDurationRoundingIncrement(smallestUnit).
|
// 8. Let maximum be ! MaximumTemporalDurationRoundingIncrement(smallestUnit).
|
||||||
auto maximum = maximum_temporal_duration_rounding_increment(*smallest_unit);
|
auto maximum = maximum_temporal_duration_rounding_increment(*smallest_unit);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2021-2022, Linus Groh <linusg@serenityos.org>
|
* Copyright (c) 2021-2023, Linus Groh <linusg@serenityos.org>
|
||||||
* Copyright (c) 2021, Luke Wilde <lukew@serenityos.org>
|
* Copyright (c) 2021, Luke Wilde <lukew@serenityos.org>
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-2-Clause
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
@ -1105,7 +1105,7 @@ JS_DEFINE_NATIVE_FUNCTION(ZonedDateTimePrototype::to_string)
|
||||||
auto precision = TRY(to_seconds_string_precision(vm, *options));
|
auto precision = TRY(to_seconds_string_precision(vm, *options));
|
||||||
|
|
||||||
// 5. Let roundingMode be ? ToTemporalRoundingMode(options, "trunc").
|
// 5. Let roundingMode be ? ToTemporalRoundingMode(options, "trunc").
|
||||||
auto rounding_mode = TRY(to_temporal_rounding_mode(vm, *options, "trunc"));
|
auto rounding_mode = TRY(to_temporal_rounding_mode(vm, *options, "trunc"sv));
|
||||||
|
|
||||||
// 6. Let showCalendar be ? ToCalendarNameOption(options).
|
// 6. Let showCalendar be ? ToCalendarNameOption(options).
|
||||||
auto show_calendar = TRY(to_calendar_name_option(vm, *options));
|
auto show_calendar = TRY(to_calendar_name_option(vm, *options));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue