mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 03:07:36 +00:00
LibJS: Leverage PrepareTemporalFields in ToTemporalTimeRecord
This is an editorial change in the Temporal spec.
See: b5ba981
This commit is contained in:
parent
6cc69bbd8e
commit
e96df3b7a7
5 changed files with 52 additions and 45 deletions
|
@ -54,7 +54,7 @@ struct DaysAndTime {
|
|||
u16 nanosecond;
|
||||
};
|
||||
|
||||
struct UnregulatedTemporalTime {
|
||||
struct TemporalTimeLikeRecord {
|
||||
Optional<double> hour;
|
||||
Optional<double> minute;
|
||||
Optional<double> second;
|
||||
|
@ -63,24 +63,24 @@ struct UnregulatedTemporalTime {
|
|||
Optional<double> nanosecond;
|
||||
};
|
||||
|
||||
// Table 3: Properties of a TemporalTimeLike, https://tc39.es/proposal-temporal/#table-temporal-temporaltimelike-properties
|
||||
// Table 4: TemporalTimeLike Record Fields, https://tc39.es/proposal-temporal/#table-temporal-temporaltimelike-properties
|
||||
|
||||
template<typename StructT, typename ValueT>
|
||||
struct TemporalTimeLikeProperty {
|
||||
ValueT StructT::*internal_slot { nullptr };
|
||||
PropertyKey property;
|
||||
struct TemporalTimeLikeRecordField {
|
||||
ValueT StructT::*field_name { nullptr };
|
||||
PropertyKey property_name;
|
||||
};
|
||||
|
||||
template<typename StructT, typename ValueT>
|
||||
auto temporal_time_like_properties = [](VM& vm) {
|
||||
using PropertyT = TemporalTimeLikeProperty<StructT, ValueT>;
|
||||
auto temporal_time_like_record_fields = [](VM& vm) {
|
||||
using FieldT = TemporalTimeLikeRecordField<StructT, ValueT>;
|
||||
return AK::Array {
|
||||
PropertyT { &StructT::hour, vm.names.hour },
|
||||
PropertyT { &StructT::microsecond, vm.names.microsecond },
|
||||
PropertyT { &StructT::millisecond, vm.names.millisecond },
|
||||
PropertyT { &StructT::minute, vm.names.minute },
|
||||
PropertyT { &StructT::nanosecond, vm.names.nanosecond },
|
||||
PropertyT { &StructT::second, vm.names.second },
|
||||
FieldT { &StructT::hour, vm.names.hour },
|
||||
FieldT { &StructT::microsecond, vm.names.microsecond },
|
||||
FieldT { &StructT::millisecond, vm.names.millisecond },
|
||||
FieldT { &StructT::minute, vm.names.minute },
|
||||
FieldT { &StructT::nanosecond, vm.names.nanosecond },
|
||||
FieldT { &StructT::second, vm.names.second },
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -96,7 +96,7 @@ bool is_valid_time(double hour, double minute, double second, double millisecond
|
|||
DaysAndTime balance_time(double hour, double minute, double second, double millisecond, double microsecond, double nanosecond);
|
||||
TemporalTime constrain_time(double hour, double minute, double second, double millisecond, double microsecond, double nanosecond);
|
||||
ThrowCompletionOr<PlainTime*> create_temporal_time(GlobalObject&, u8 hour, u8 minute, u8 second, u16 millisecond, u16 microsecond, u16 nanosecond, FunctionObject const* new_target = nullptr);
|
||||
ThrowCompletionOr<UnregulatedTemporalTime> to_temporal_time_record(GlobalObject&, Object const& temporal_time_like, ToTemporalTimeRecordCompleteness = ToTemporalTimeRecordCompleteness::Complete);
|
||||
ThrowCompletionOr<TemporalTimeLikeRecord> to_temporal_time_record(GlobalObject&, Object const& temporal_time_like, ToTemporalTimeRecordCompleteness = ToTemporalTimeRecordCompleteness::Complete);
|
||||
String temporal_time_to_string(u8 hour, u8 minute, u8 second, u16 millisecond, u16 microsecond, u16 nanosecond, Variant<StringView, u8> const& precision);
|
||||
i8 compare_temporal_time(u8 hour1, u8 minute1, u8 second1, u16 millisecond1, u16 microsecond1, u16 nanosecond1, u8 hour2, u8 minute2, u8 second2, u16 millisecond2, u16 microsecond2, u16 nanosecond2);
|
||||
DaysAndTime add_time(u8 hour, u8 minute, u8 second, u16 millisecond, u16 microsecond, u16 nanosecond, double hours, double minutes, double seconds, double milliseconds, double microseconds, double nanoseconds);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue