Luke Wilde
acf8729a81
LibJS: Implement Temporal.Duration.prototype.round
2021-11-29 22:56:35 +00:00
Timothy Flynn
4a08fd2be2
LibJS: Implement Intl.DateTimeFormat.prototype.resolvedOptions
2021-11-29 22:48:46 +00:00
Timothy Flynn
d0e1997e07
LibJS: Implement Intl.DateTimeFormat.supportedLocalesOf
2021-11-29 22:48:46 +00:00
Timothy Flynn
16151aa7d5
LibJS+LibUnicode: Implement the Intl.DateTimeFormat constructor
2021-11-29 22:48:46 +00:00
Timothy Flynn
75b2a09a2f
LibJS: Implement a nearly empty Intl.DateTimeFormat object
...
This adds plumbing for the Intl.DateTimeFormat object, constructor, and
prototype.
Note that unlike other Intl objects, the Intl.DateTimeFormat object has
a LibUnicode structure as a base. This is to prevent wild amounts of
code duplication between LibUnicode, Intl.DateTimeFormat, and other
not-yet-defined Intl structures, because there's 12 fields shared
between them.
2021-11-29 22:48:46 +00:00
Linus Groh
f7ba81ac52
LibJS: Implement parsing of TemporalDurationString
2021-11-28 10:32:28 +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
Idan Horowitz
957f54d96f
LibJS: Throw InternalErrors instead of Errors on CallStackSizeExceeded
...
These seem more appropriate.
2021-11-27 01:58:05 +02: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
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
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
d0c29c9735
LibJS: Allow string as parameter in Temporal's round() / total()
...
This is a normative change in the Temporal spec.
See: 1f0c586
2021-11-19 11:06:53 +00:00
Linus Groh
ec1e1f4f12
LibJS: Disallow Temporal.Duration input values to be non-integers
...
This is a normative change in the Temporal spec.
See: 8c85450
2021-11-17 22:20:59 +00:00
Luke Wilde
3666d2132b
LibJS: Remove fallback value for get_offset_nanoseconds_for
...
This is a normative change in the Temporal spec.
See: 664f02d
Note that the tests are not comprehensive.
2021-11-17 11:30:13 +00:00
Linus Groh
f1784c9c87
LibJS/Tests: Fix failing Array.prototype.toLocaleString() test
2021-11-17 10:00:20 +00:00
Timothy Flynn
39ab1a8999
LibJS: Implement ECMA-402 Array.prototype.toLocaleString
...
Turns out the only difference between our existing implementation and
the ECMA-402 implementation is we weren't passing the locales and
options list to each element.toLocaleString invocation.
This also adds spec comments to the definition.
2021-11-17 09:01:32 +00:00
Timothy Flynn
c19c3205ff
LibJS: Implement ECMA-402 Number.prototype.toLocaleString
2021-11-17 09:01:32 +00:00
Timothy Flynn
a1d5849e67
LibJS: Implement unit number formatting
2021-11-16 23:14:09 +00:00
Linus Groh
58c6a156bf
LibCrypto: Fix subtracting two negative SignedBigInteger
s
...
Currently, we get the following results
-1 - -2 = -1
-2 - -1 = 1
Correct would be:
-1 - -2 = 1
-2 - -1 = -1
This was already attempted to be fixed in 7ed8970
, but that change was
incorrect. This directly translates to LibJS BigInts having the same
incorrect behavior - it even was tested.
2021-11-16 10:06:53 +00:00
Luke Wilde
ac65fb40d9
LibJS: Implement Temporal.PlainDate.prototype.since
2021-11-16 01:06:07 +00:00
Luke Wilde
ddec3bc888
LibJS: Implement Temporal.PlainDate.prototype.until
2021-11-16 01:06:07 +00:00
Timothy Flynn
99c15741ba
LibJS: Conditionally ignore [[UseGrouping]] in compact notation
2021-11-16 00:56:55 +00:00
Timothy Flynn
fdae323401
LibJS: Implement compact formatting for Intl.NumberFormat
2021-11-16 00:56:55 +00:00
Timothy Flynn
4d79ab6866
LibJS: Implement engineering and scientific number formatting
2021-11-14 17:00:35 +00:00
Linus Groh
194d90dc72
LibJS: Don't coerce this value to object in Promise.prototype.finally()
2021-11-14 15:27:46 +00:00
Linus Groh
53ec432e8d
LibJS: Don't coerce this value to object in Promise.resolve()
2021-11-14 15:27:46 +00:00
Timothy Flynn
15c5fbd9e9
LibJS: Implement number grouping for Intl.NumberFormat
...
For example, in en-US, the number 123456 should be formatted as the
string "123,456". In en-IN, it should be formatted as "1,23,456".
2021-11-14 10:35:19 +00:00
Luke Wilde
f6ab63993a
LibJS: Implement Temporal.ZonedDateTime.prototype.round
2021-11-13 19:48:54 +00:00
Timothy Flynn
3450def494
LibJS: Implement Intl.NumberFormat.prototype.formatToParts
2021-11-13 19:01:25 +00:00
Timothy Flynn
40973814e9
LibJS: Throw an exception in NumberFormat.prototype.format for BigInts
...
Rather than crashing in the call to as_double(), throw an exception for
now.
2021-11-13 19:01:25 +00:00
Linus Groh
dbe70e7c55
LibJS: Implement Temporal.Duration.prototype.total()
2021-11-13 18:50:54 +00:00
Linus Groh
f0cd727d74
LibJS: Fix logic typo in balance_duration() hours calculation
...
By using milliseconds_division_result instead of seconds_division_result
here, the result for hours was off by a factor of 60.
2021-11-13 13:32:35 +00:00
Timothy Flynn
a701ed52fc
LibJS+LibUnicode: Fully implement currency number formatting
...
Currencies are a bit strange; the layout of currency data in the CLDR is
not particularly compatible with what ECMA-402 expects. For example, the
currency format in the "en" and "ar" locales for the Latin script are:
en: "¤#,##0.00"
ar: "¤\u00A0#,##0.00"
Note how the "ar" locale has a non-breaking space after the currency
symbol (¤), but "en" does not. This does not mean that this space will
appear in the "ar"-formatted string, nor does it mean that a space won't
appear in the "en"-formatted string. This is a runtime decision based on
the currency display chosen by the user ("$" vs. "USD" vs. "US dollar")
and other rules in the Unicode TR-35 spec.
ECMA-402 shies away from the nuances here with "implementation-defined"
steps. LibUnicode will store the data parsed from the CLDR however it is
presented; making decisions about spacing, etc. will occur at runtime
based on user input.
2021-11-13 11:52:45 +00:00