Linus Groh
69b8079b11
LibJS: Fix "smallestUnit" property name typo in a couple of places
...
This is a normative change in the Temporal spec.
See: 900e4bc
2021-12-18 22:32:39 +00:00
Linus Groh
70e6eae27b
LibJS: Fix off-by-one in balance_iso_date() for leap year inputs
...
This is a normative change in the Temporal spec.
See: 5ab1822
2021-12-18 22:32:39 +00:00
Linus Groh
7270bbb255
LibJS: Remove outdated comment from parse_temporal_duration_string()
...
This is a normative change in the Temporal spec.
See:
- e7182d3
- 6dae066
2021-12-18 22:32:39 +00:00
Linus Groh
247d2f7cc4
LibJS: Only allow Calendar this value in Temporal.Calendar.prototype.id
...
This is a normative change in the Temporal spec.
See: 2644fc6
2021-12-18 22:32:39 +00:00
Linus Groh
bdb8fc54f2
LibJS: Update spec comment in balance_duration_relative()
...
This is an editorial change in the Temporal spec.
See: 665871e
2021-12-09 23:18:01 +00:00
Linus Groh
82efbfcf3d
LibJS: Update spec comment in Temporal.Duration.prototype.round()
...
This is an editorial change in the Temporal spec.
See: 513c05b
2021-12-09 23:14:36 +00:00
Andreas Kling
fed6a76990
LibJS: Add Handle::operator->()
2021-12-09 21:28:52 +01:00
Linus Groh
f1dafabbb9
LibJS: Simplify TemporalInstantString
...
This is an editorial change in the Temporal spec.
See: 271d71c
2021-12-08 19:57:19 +00:00
Luke Wilde
4f3c283f24
LibJS: Move calendar validation out of parse_temporal_calendar_string
...
This is an editorial change in the Temporal spec.
See: 7207a1c
2021-12-08 19:11:50 +00:00
Luke Wilde
80dcddacea
LibJS: Simplify return in parse_temporal_date_time_string
...
This is an editorial change in the Temporal spec.
See: 1f7e486
2021-12-08 19:11:50 +00:00
Luke Wilde
6244969ae2
LibJS: Remove duplicated spec step in parse_iso_date_time
...
This is an editorial change in the Temporal spec.
See: 516bf24
2021-12-08 19:11:50 +00:00
Timothy Flynn
1039159a6c
LibJS: Change LargerOfTwoTemporalUnits AO to return a StringView
2021-11-30 00:01:07 +00:00
Luke Wilde
2cea4ad508
LibJS: Implement Temporal.Duration.prototype.subtract
2021-11-29 22:56:35 +00:00
Luke Wilde
ac8c3919cb
LibJS: Implement Temporal.Duration.prototype.add
2021-11-29 22:56:35 +00:00
Luke Wilde
acf8729a81
LibJS: Implement Temporal.Duration.prototype.round
2021-11-29 22:56:35 +00:00
Linus Groh
f7ba81ac52
LibJS: Implement parsing of TemporalDurationString
2021-11-28 10:32:28 +00:00
Linus Groh
908d943e85
LibJS: Parse TemporalInstantString as part of TemporalCalendarString
2021-11-27 23:54:38 +00:00
Linus Groh
8f99c05f97
LibJS: Implement Temporal.PlainYearMonth.prototype.since()
2021-11-27 19:11:31 +00:00
Linus Groh
bdd2c357fd
LibJS: Implement Temporal.PlainYearMonth.prototype.until()
2021-11-27 19:11:31 +00:00
Linus Groh
6f2e0b3355
LibJS: Implement Temporal.PlainYearMonth.prototype.subtract()
2021-11-27 17:48:04 +00:00
Linus Groh
acbcd64cdc
LibJS: Implement Temporal.PlainYearMonth.prototype.add()
2021-11-27 17:48:04 +00:00
Linus Groh
ad294ff2ee
LibJS: Simplify TemporalRelativeToString
...
This is an editorial change in the Temporal spec.
See: d3b2e90
2021-11-24 18:18:05 +00:00
Linus Groh
de69f5dbf4
LibJS: Implement Temporal.ZonedDateTime.prototype.since()
2021-11-24 17:53:00 +00:00
Linus Groh
7a2eeae8c6
LibJS: Implement Temporal.ZonedDateTime.prototype.until()
2021-11-24 17:53:00 +00:00
Luke Wilde
7dc846d51c
LibJS: Implement balance_duration_relative()
2021-11-24 17:53:00 +00:00
Luke Wilde
9559cea8e5
LibJS: Implement add_duration()
2021-11-24 17:53:00 +00:00
Luke Wilde
1f84deaf63
LibJS: Implement default_temporal_largest_unit()
2021-11-24 17:53:00 +00:00
Luke Wilde
16301a603c
LibJS: Implement difference_zoned_date_time()
2021-11-24 17:53:00 +00:00
Linus Groh
1e41a8668d
LibJS: Add sign(Crypto::SignedBigInteger const&) overload
2021-11-24 17:53:00 +00:00
Linus Groh
a20b189eab
LibJS: Fix incorrectly formatted section comments
...
A couple of missing URLs, spaces, and a stray comma.
2021-11-24 17:37:27 +00:00
Linus Groh
78724fdd33
LibJS: Don't accept UTC designators in strings for plain Temporal types
...
This is a normative change in the Temporal spec.
See: cd2dc7d
2021-11-24 08:56:03 +00:00
Linus Groh
836ce8ee5d
LibJS: Fix parse ErrorType used in parse_temporal_date_string()
...
TemporalInvalidDateString, not TemporalInvalidDateTimeString.
2021-11-24 08:38:50 +00:00
Linus Groh
55dbd19a16
LibJS: Update to_largest_temporal_unit() to allow undefined fallback
...
This is required for Temporal.Duration.prototype.round(). Subsequently,
this now returns ThrowCompletionOr<Optional<String>>, which brings the
signature in line with that of to_smallest_temporal_unit().
Much nicer! :^)
2021-11-23 21:03:05 +00:00
Linus Groh
0619c34703
LibJS: Implement Temporal.PlainDateTime.prototype.since()
2021-11-21 20:04:19 +00:00
Linus Groh
803eddbb62
LibJS: Implement Temporal.PlainDateTime.prototype.until()
2021-11-21 20:04:19 +00:00
Linus Groh
aed444253c
LibJS: Implement Temporal.PlainTime.prototype.since()
2021-11-21 20:04:19 +00:00
Linus Groh
2ac1774fd3
LibJS: Implement Temporal.PlainTime.prototype.until()
2021-11-21 20:04:19 +00:00
Linus Groh
783222f87a
LibJS: Implement parsing of TemporalInstantString
2021-11-20 23:10:09 +00:00
Linus Groh
79a18b058f
LibJS: Implement parsing of TemporalCalendarString
2021-11-20 23:10:09 +00:00
Linus Groh
1583c7257c
LibJS: Implement parsing of TemporalRelativeToString
2021-11-20 23:10:09 +00:00
Linus Groh
98b876ad3f
LibJS: Implement parsing of TemporalZonedDateTimeString
2021-11-20 23:10:09 +00:00
Linus Groh
3b1de431cc
LibJS: Implement parsing of TemporalYearMonthString
2021-11-20 23:10:09 +00:00
Linus Groh
3ddab2f4fe
LibJS: Implement parsing of TemporalMonthDayString
2021-11-20 23:10:09 +00:00
Linus Groh
453c78215c
LibJS: Implement parsing of TemporalTimeString
2021-11-20 23:10:09 +00:00
Linus Groh
b42b7d5f16
LibJS: Implement parsing of TemporalDateTimeString
2021-11-20 23:10:09 +00:00
Linus Groh
02e7de2cba
LibJS: Implement parsing of TemporalDateString
2021-11-20 23:10:09 +00:00
Linus Groh
3f1af7c05f
LibJS: Update parse_temporal_time_zone() to match the spec again
2021-11-20 23:10:09 +00:00
Linus Groh
27304017e3
LibJS: Don't assume calendar was parsed in to_temporal_zoned_date_time()
...
The first step of to_temporal_calendar_with_iso_default() is checking
whether the given value is undefined, so we should actually pass that
instead of unconditionally dereferencing the Optional<String>.
2021-11-20 23:10:09 +00:00
Linus Groh
9628452550
LibJS: Fix fallback of hour, minute, second in parse_iso_date_time()
...
It's not the `to_uint<u8>()` call that would fail, if we have a value
for these productions they will always be valid numbers. We do need to
provide a fallback for when that's not the case and any of them is
undefined, i.e. an empty Optional.
2021-11-20 23:10:09 +00:00
Linus Groh
de23f0b68c
LibJS: Start fleshing out an ISO 8601 parser for Temporal
...
This is the start of a parser for the ISO 8601 grammar used in the
Temporal spec:
https://tc39.es/proposal-temporal/#sec-temporal-iso8601grammar
We will, on purpose, not use a generic ISO 8601 parser from AK or
similar for two reasons:
- Many AOs make specific assumptions about which productions exist and
access them directly, even when they're part of a larger production.
- The spec says "The grammar deviates from the standard given in ISO
8601 in the following ways:" and then lists 17 of such deviations.
Making that work with a general purpose parser is not worth it.
The public API is not being used anywhere yet, but will be in the next
couple of commits. Likewise, the Production enum will be populated with
all the productions accessed directly (e.g. TemporalDateString).
Many thanks to Ali for showing me how to improve my initial approach
full of macros with a nice RAII helper - it's much nicer :^)
Co-Authored-By: Ali Mohammad Pur <mpfard@serenityos.org>
2021-11-20 23:10:09 +00:00