Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Editorial: Capitalize field names to match 262 style guide #766

Closed
wants to merge 40 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
13656ee
changed [[localeMatcher]] to [[LocaleMatcher]] in all relevant places
ben-allen Mar 14, 2023
6cafaa8
changed [[localeMatcher]] to [[LocaleMatcher]] in all relevant places
ben-allen Mar 14, 2023
cc4f530
Merge branch 'master' of https://github.com/ben-allen/ecma402
ben-allen Mar 14, 2023
2036748
remove extraneous TODO
ben-allen Mar 14, 2023
f7e02f2
Update notes again to clarify discussion
justingrant Mar 16, 2023
e1e8e19
Editorial: Add missing internal slots to internalSlotsList (#763)
FrankYFTang Mar 20, 2023
4b9719b
Remove `!` from calls to AOs that can't throw
justingrant Mar 22, 2023
7a23ab7
updated all [[locale]] to [[Locale]]
ben-allen Mar 28, 2023
cfd469e
corrected [[hourCycle]] in datetimeformat.html to [[HourCycle]]. n.b.…
ben-allen Mar 28, 2023
126e2e0
Merge branch 'tc39:master' into capitalization
ben-allen Mar 28, 2023
8cddcc4
[[dataLocale]] on Records returned from ResolveLocale changed to [[Da…
ben-allen Mar 28, 2023
dbb599a
[[dataLocale]] on Records returned from ResolveLocale changed to [[Da…
ben-allen Mar 28, 2023
bba5660
Merge branch 'capitalization' of https://github.com/ben-allen/ecma402…
ben-allen Mar 28, 2023
a6c9ff1
fixed [[Style]] and [[Sensitivity]]
ben-allen Mar 28, 2023
735a1f3
updated [[format]] to [[Format]] on [[LocaleData]].[[<locale>]]
ben-allen Mar 29, 2023
bc24468
[[extension]] to [[Extension]]
ben-allen Mar 29, 2023
96f9a3e
first attempt at removing the dynamic access from listformat
ben-allen Mar 30, 2023
0164a0f
Replaced dynamic accesses in ListFormat with if/else if
ben-allen Mar 30, 2023
2c6a892
last commit before refactoring NumberFormat
ben-allen Mar 31, 2023
2a7d3cb
capitalized several fields from numberformat.html ([[Pattern]], [[Pos…
ben-allen Mar 31, 2023
dad7da8
Revert "capitalized several fields from numberformat.html ([[Pattern]…
ben-allen Mar 31, 2023
900a1d6
[[patterns]] to [[Patterns]]
ben-allen Mar 31, 2023
2f5dc62
updated [[Decimal]], [[Percent]], [[Currency]], [[Unit]]
ben-allen Mar 31, 2023
e5aa467
missed some of the conversions from *percent*, etc. to [[Percent]] fr…
ben-allen Mar 31, 2023
5824ffb
updated fields related to currencyDisplay and currencySign
ben-allen Mar 31, 2023
e669234
[[ZeroPattern]], [[NegativePattern]], [[PositivePattern]]
ben-allen Mar 31, 2023
09dfd7d
fields related to notationSubPatterns
ben-allen Apr 1, 2023
c10277f
finished numberformat refactor
ben-allen Apr 1, 2023
4b83671
started on DisplayNames -- refactored [[types]]
ben-allen Apr 1, 2023
31ccf68
fixed typo in numberformat.html
ben-allen Apr 1, 2023
1c71461
fixed field names for Records contained within [[Types]]
ben-allen Apr 1, 2023
78e4c9c
Refactored all of displaynames.html
ben-allen Apr 1, 2023
64e610e
removed dynamic access [[<unitDisplay>]] / replaced with if-else
ben-allen Apr 1, 2023
cf34e4e
finished displaynames.html
ben-allen Apr 1, 2023
d10ce42
finished refactoring relativetimeformat.html
ben-allen Apr 2, 2023
4f569ac
I believe this is technically complete. There are now no lower-case f…
ben-allen Apr 3, 2023
de51194
fixed formatting of [[Day]] in datetimeformat.html
ben-allen Apr 3, 2023
17c401c
typo in numberformat.html
ben-allen Apr 3, 2023
4e45d8b
Refactor -- changed names of all fields/slots previously in camelCase to
ben-allen Mar 14, 2023
c33b586
Merge branch 'capitalization' of https://github.com/ben-allen/ecma402…
ben-allen Apr 7, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions spec/collator.html
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ <h1>InitializeCollator ( _collator_, _locales_, _options_ )</h1>
1. Let _localeData_ be %Collator%.[[SearchLocaleData]].
1. Let _opt_ be a new Record.
1. Let _matcher_ be ? GetOption(_options_, *"localeMatcher"*, ~string~, &laquo; *"lookup"*, *"best fit"* &raquo;, *"best fit"*).
1. Set _opt_.[[localeMatcher]] to _matcher_.
1. Set _opt_.[[LocaleMatcher]] to _matcher_.
1. Let _collation_ be ? GetOption(_options_, *"collation"*, ~string~, ~empty~, *undefined*).
1. If _collation_ is not *undefined*, then
1. If _collation_ does not match the Unicode Locale Identifier `type` nonterminal, throw a *RangeError* exception.
Expand All @@ -58,7 +58,7 @@ <h1>InitializeCollator ( _collator_, _locales_, _options_ )</h1>
1. Set _opt_.[[kf]] to _caseFirst_.
1. Let _relevantExtensionKeys_ be %Collator%.[[RelevantExtensionKeys]].
1. Let _r_ be ResolveLocale(%Collator%.[[AvailableLocales]], _requestedLocales_, _opt_, _relevantExtensionKeys_, _localeData_).
1. Set _collator_.[[Locale]] to _r_.[[locale]].
1. Set _collator_.[[Locale]] to _r_.[[Locale]].
1. Let _collation_ be _r_.[[co]].
1. If _collation_ is *null*, let _collation_ be *"default"*.
1. Set _collator_.[[Collation]] to _collation_.
Expand All @@ -71,9 +71,9 @@ <h1>InitializeCollator ( _collator_, _locales_, _options_ )</h1>
1. If _usage_ is *"sort"*, then
1. Let _sensitivity_ be *"variant"*.
1. Else,
1. Let _dataLocale_ be _r_.[[dataLocale]].
1. Let _dataLocale_ be _r_.[[DataLocale]].
1. Let _dataLocaleData_ be _localeData_.[[&lt;_dataLocale_&gt;]].
1. Let _sensitivity_ be _dataLocaleData_.[[sensitivity]].
1. Let _sensitivity_ be _dataLocaleData_.[[Sensitivity]].
1. Set _collator_.[[Sensitivity]] to _sensitivity_.
1. Let _ignorePunctuation_ be ? GetOption(_options_, *"ignorePunctuation"*, ~boolean~, ~empty~, *false*).
1. Set _collator_.[[IgnorePunctuation]] to _ignorePunctuation_.
Expand Down Expand Up @@ -133,7 +133,7 @@ <h1>Internal slots</h1>
<ul>
<li>The first element of [[SortLocaleData]].[[&lt;_locale_&gt;]].[[co]] and [[SearchLocaleData]].[[&lt;_locale_&gt;]].[[co]] must be *null*.</li>
<li>The values *"standard"* and *"search"* must not be used as elements in any [[SortLocaleData]].[[&lt;_locale_&gt;]].[[co]] and [[SearchLocaleData]].[[&lt;_locale_&gt;]].[[co]] list.</li>
<li>[[SearchLocaleData]].[[&lt;_locale_&gt;]] must have a [[sensitivity]] field with a String value equal to *"base"*, *"accent"*, *"case"*, or *"variant"*.</li>
<li>[[SearchLocaleData]].[[&lt;_locale_&gt;]] must have a [[Sensitivity]] field with a String value equal to *"base"*, *"accent"*, *"case"*, or *"variant"*.</li>
</ul>
</emu-clause>
</emu-clause>
Expand Down
199 changes: 110 additions & 89 deletions spec/datetimeformat.html

Large diffs are not rendered by default.

123 changes: 89 additions & 34 deletions spec/displaynames.html
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ <h1>Intl.DisplayNames ( _locales_, _options_ )</h1>
1. Let _opt_ be a new Record.
1. Let _localeData_ be %DisplayNames%.[[LocaleData]].
1. Let _matcher_ be ? GetOption(_options_, *"localeMatcher"*, ~string~, &laquo; *"lookup"*, *"best fit"* &raquo;, *"best fit"*).
1. Set _opt_.[[localeMatcher]] to _matcher_.
1. Set _opt_.[[LocaleMatcher]] to _matcher_.
1. Let _r_ be ResolveLocale(%DisplayNames%.[[AvailableLocales]], _requestedLocales_, _opt_, %DisplayNames%.[[RelevantExtensionKeys]]).
1. Let _style_ be ? GetOption(_options_, *"style"*, ~string~, &laquo; *"narrow"*, *"short"*, *"long"* &raquo;, *"long"*).
1. Set _displayNames_.[[Style]] to _style_.
Expand All @@ -33,23 +33,66 @@ <h1>Intl.DisplayNames ( _locales_, _options_ )</h1>
1. Set _displayNames_.[[Type]] to _type_.
1. Let _fallback_ be ? GetOption(_options_, *"fallback"*, ~string~, &laquo; *"code"*, *"none"* &raquo;, *"code"*).
1. Set _displayNames_.[[Fallback]] to _fallback_.
1. Set _displayNames_.[[Locale]] to _r_.[[locale]].
1. Let _dataLocale_ be _r_.[[dataLocale]].
1. Set _displayNames_.[[Locale]] to _r_.[[Locale]].
1. Let _dataLocale_ be _r_.[[DataLocale]].
1. Let _dataLocaleData_ be _localeData_.[[&lt;_dataLocale_&gt;]].
1. Let _types_ be _dataLocaleData_.[[types]].
1. Let _types_ be _dataLocaleData_.[[Types]].
1. Assert: _types_ is a Record (see <emu-xref href="#sec-Intl.DisplayNames-internal-slots"></emu-xref>).
1. Let _languageDisplay_ be ? GetOption(_options_, *"languageDisplay"*, ~string~, &laquo; *"dialect"*, *"standard"* &raquo;, *"dialect"*).
1. Let _typeFields_ be _types_.[[&lt;_type_&gt;]].
1. Let _typeFields_ be the field of the Fields column of <emu-xref href="#table-displaynames-types"></emu-xref> in the row with _type_ in its Type Names column.
1. Assert: _typeFields_ is a Record (see <emu-xref href="#sec-Intl.DisplayNames-internal-slots"></emu-xref>).
1. If _type_ is *"language"*, then
1. Set _displayNames_.[[LanguageDisplay]] to _languageDisplay_.
1. Let _typeFields_ be _typeFields_.[[&lt;_languageDisplay_&gt;]].
1. If _languageDisplay_ is *"standard"*, then
1. Let _typeFields_ be _typeFields_.[[Standard]].
1. Else,
1. Let _typeFields_ be _typeFields_.[[Dialect]].
1. Assert: _typeFields_ is a Record (see <emu-xref href="#sec-Intl.DisplayNames-internal-slots"></emu-xref>).
1. Let _styleFields_ be _typeFields_.[[&lt;_style_&gt;]].
1. If _style_ is *"narrow"*, then
1. Let _styleFields_ be _typeFields_.[[Narrow]].
1. Else if _style_ is *"short*", then
1. Let _styleFields_ be _typeFields_.[[Short]].
1. Else,
1. Let _styleFields_ be _typeFields_.[[Long]].
1. Assert: _styleFields_ is a Record (see <emu-xref href="#sec-Intl.DisplayNames-internal-slots"></emu-xref>).
1. Set _displayNames_.[[Fields]] to _styleFields_.
1. Return _displayNames_.
</emu-alg>
<emu-table id="table-displaynames-types">
<emu-caption>Fields Corresponding to Type Names</emu-caption>
<table class="real-table">
<thead>
<tr>
<th>Field</th>
<th>Type Names</th>
</tr>
</thead>
<tr>
<td>[[Language]]</td>
<td>*"language"*</td>
</tr>
<tr>
<td>[[Region]]</td>
<td>*"region"*</td>
</tr>
<tr>
<td>[[Script]]</td>
<td>*"script"*</td>
</tr>
<tr>
<td>[[Currency]]</td>
<td>*"currency"*</td>
</tr>
<tr>
<td>[[Calendar]]</td>
<td>*"calendar"*</td>
</tr>
<tr>
<td>[[DateTimeField]]</td>
<td>*"dateTimeField"*</td>
</tr>
</table>
</emu-table>
</emu-clause>
</emu-clause>

Expand Down Expand Up @@ -101,18 +144,17 @@ <h1>Internal slots</h1>
</p>

<ul>
<li>[[LocaleData]].[[&lt;_locale_&gt;]] must have a [[types]] field for all locale values _locale_. The value of this field must be a Record, which must have fields with the names of all display name types: *"language"*, *"region"*, *"script"*, *"currency"*, *"calendar"*, and *"dateTimeField"*.</li>
<li>The value of the field *"language"* must be a Record which must have fields with the names of one of the valid language displays: *"dialect"* and *"standard"*.</li>
<li>The language display fields under display name type *"language"* should contain Records which must have fields with the names of one of the valid display name styles: *"narrow"*, *"short"*, and *"long"*.</li>
<li>The value of the fields *"region"*, *"script"*, *"currency"*, *"calendar"*, and *"dateTimeField"* must be Records, which must have fields with the names of all display name styles: *"narrow"*, *"short"*, and *"long"*.</li>
<li>The display name style fields under display name type *"language"* should contain Records with keys corresponding to language codes matching the `unicode_language_id` production. The value of these fields must be string values.</li>
<li>The display name style fields under display name type *"region"* should contain Records with keys corresponding to region codes. The value of these fields must be string values.</li>
<li>The display name style fields under display name type *"script"* should contain Records with keys corresponding to script codes. The value of these fields must be string values.</li>
<li>The display name style fields under display name type *"currency"* should contain Records with keys corresponding to currency codes. The value of these fields must be string values.</li>
<li>The display name style fields under display name type *"calendar"* should contain Records with keys corresponding to a String value with the `type` given in Unicode Technical Standard 35 for the calendar used for formatting. The value of these fields must be string values.</li>
<li>The display name style fields under display name type *"dateTimeField"* should contain Records with keys corresponding to codes listed in <emu-xref href="#table-validcodefordatetimefield"></emu-xref>. The value of these fields must be string values.</li>
<li>[[LocaleData]].[[&lt;_locale_&gt;]] must have a [[Types]] field for all locale values _locale_. The value of this field must be a Record, which must have fields corresponding to all display name type names as given in <emu-xref href="#table-displaynames-types"></emu-xref>.</li>
<li>The value of the field [[Language]] must be a Record which must have fields [[Dialect]] and [[Standard]], corresponding to the names of the valid language displays: *"dialect"* and *"standard"*.</li>
<li>The language display fields of [[Language]] should contain Records which must have fields [[Narrow]], [[Short]], and [[Long]], corresponding to the valid display name styles: *"narrow"*, *"short"*, and *"long"*.</li>
<li>The value of the fields [[Region]], [[Script]], [[Currency]], [[Calendar]], and [[DateTimeField]] must be Records, which must have fields [[Narrow]], [[Short]], and [[Long]], corresponding to the valid display name styles: *"narrow"*, *"short*", and *"long"*.</li>
<li>The display name style fields of [[Language]] should contain Records with keys corresponding to language codes matching the `unicode_language_id` production. The value of these fields must be string values.</li>
<li>The display name style fields under display name type [[Region]] should contain Records with keys corresponding to region codes. The value of these fields must be string values.</li>
<li>The display name style fields under display name type [[Script]] should contain Records with keys corresponding to script codes. The value of these fields must be string values.</li>
<li>The display name style fields under display name type [[Currency]] should contain Records with keys corresponding to currency codes. The value of these fields must be string values.</li>
<li>The display name style fields under display name type [[Calendar]] should contain Records with keys corresponding to a String value with the `type` given in Unicode Technical Standard 35 for the calendar used for formatting. The value of these fields must be string values.</li>
<li>The display name style fields under display name type [[DateTimeField]] should contain Records with the fields listed in the Fields row of <emu-xref href="#table-validcodefordatetimefield"></emu-xref>. The values of these fields must be string values.</li>
</ul>

<emu-note>
It is recommended that implementations use the locale data provided by the Common Locale Data Repository (available at <a href="https://cldr.unicode.org/">https://cldr.unicode.org/</a>).
</emu-note>
Expand Down Expand Up @@ -280,74 +322,87 @@ <h1>CanonicalCodeForDisplayNames ( _type_, _code_ )</h1>
<emu-clause id="sec-isvaliddatetimefieldcode" type="abstract operation">
<h1>
IsValidDateTimeFieldCode (
_field_: a String,
_fieldCode_: a String,
)
</h1>
<dl class="header">
<dt>description</dt>
<dd>It verifies that the _field_ argument represents a valid date time field code.</dd>
<dd>It verifies that the _fieldCode_ argument represents a valid date time field code.</dd>
</dl>
<emu-alg>
1. If _field_ is listed in the Code column of <emu-xref href="#table-validcodefordatetimefield"></emu-xref>, return *true*.
1. If _fieldCode_ is listed in the Code column of <emu-xref href="#table-validcodefordatetimefield"></emu-xref>, return *true*.
1. Return *false*.
</emu-alg>

<emu-table id="table-validcodefordatetimefield">
<emu-caption>Codes For Date Time Field of DisplayNames</emu-caption>
<emu-caption>Fields and Codes For DateTimeField of DisplayNames</emu-caption>
<table class="real-table">
<thead>
<tr>
<th>Fields</th>
<th>Code</th>
<th>Description</th>
</tr>
</thead>
<tr>
<td>[[Era]]</td>
<td>*"era"*</td>
<td>The field indicating the era, e.g. AD or BC in the Gregorian or Julian calendar.</td>
<td>The era, e.g. AD or BC in the Gregorian or Julian calendar.</td>
</tr>
<tr>
<td>[[Year]]</td>
<td>*"year"*</td>
<td>The field indicating the year (within an era).</td>
<td>The year (within an era).</td>
</tr>
<tr>
<td>[[Quarter]]</td>
<td>*"quarter"*</td>
<td>The field indicating the quarter, e.g. Q2, 2nd quarter, etc.</td>
<td>The quarter, e.g. Q2, 2nd quarter, etc.</td>
</tr>
<tr>
<td>[[Month]]</td>
<td>*"month"*</td>
<td>The field indicating the month, e.g. Sep, September, etc.</td>
<td>The month, e.g. Sep, September, etc.</td>
</tr>
<tr>
<td>[[WeekOfYear]]</td>
<td>*"weekOfYear"*</td>
<td>The field indicating the week number within a year.</td>
<td>The week number within a year.</td>
</tr>
<tr>
<td>[[Weekday]]</td>
<td>*"weekday"*</td>
<td>The field indicating the day of week, e.g. Tue, Tuesday, etc.</td>
<td>The day of week, e.g. Tue, Tuesday, etc.</td>
</tr>
<tr>
<td>[[Day]]</td>
<td>*"day"*</td>
<td>The field indicating the day in month.</td>
<td>The day in month.</td>
</tr>
<tr>
<td>[[DayPeriod]]</td>
<td>*"dayPeriod"*</td>
<td>The field indicating the day period, either am, pm, etc. or noon, evening, etc..</td>
<td>The day period, either am, pm, etc. or noon, evening, etc.</td>
</tr>
<tr>
<td>[[Hour]]</td>
<td>*"hour"*</td>
<td>The field indicating the hour.</td>
<td>The hour.</td>
</tr>
<tr>
<td>[[Minute]]</td>
<td>*"minute"*</td>
<td>The field indicating the minute.</td>
<td>The minute.</td>
</tr>
<tr>
<td>[[Second]]</td>
<td>*"second"*</td>
<td>The field indicating the second.</td>
<td>The second.</td>
</tr>
<tr>
<td>[[TimeZoneName]]</td>
<td>*"timeZoneName"*</td>
<td>The field indicating the time zone name, e.g. PDT, Pacific Daylight Time, etc.</td>
<td>The time zone name, e.g. PDT, Pacific Daylight Time, etc.</td>
</tr>
</table>
</emu-table>
Expand Down
25 changes: 18 additions & 7 deletions spec/listformat.html
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,29 @@ <h1>Intl.ListFormat ( [ _locales_ [ , _options_ ] ] )</h1>
1. Set _options_ to ? GetOptionsObject(_options_).
1. Let _opt_ be a new Record.
1. Let _matcher_ be ? GetOption(_options_, *"localeMatcher"*, ~string~, &laquo; *"lookup"*, *"best fit"* &raquo;, *"best fit"*).
1. Set _opt_.[[localeMatcher]] to _matcher_.
1. Set _opt_.[[LocaleMatcher]] to _matcher_.
1. Let _localeData_ be %ListFormat%.[[LocaleData]].
1. Let _r_ be ResolveLocale(%ListFormat%.[[AvailableLocales]], _requestedLocales_, _opt_, %ListFormat%.[[RelevantExtensionKeys]], _localeData_).
1. Set _listFormat_.[[Locale]] to _r_.[[locale]].
1. Set _listFormat_.[[Locale]] to _r_.[[Locale]].
1. Let _type_ be ? GetOption(_options_, *"type"*, ~string~, &laquo; *"conjunction"*, *"disjunction"*, *"unit"* &raquo;, *"conjunction"*).
1. Set _listFormat_.[[Type]] to _type_.
1. Let _style_ be ? GetOption(_options_, *"style"*, ~string~, &laquo; *"long"*, *"short"*, *"narrow"* &raquo;, *"long"*).
1. Set _listFormat_.[[Style]] to _style_.
1. Let _dataLocale_ be _r_.[[dataLocale]].
1. Let _dataLocale_ be _r_.[[DataLocale]].
1. Let _dataLocaleData_ be _localeData_.[[&lt;_dataLocale_&gt;]].
1. Let _dataLocaleTypes_ be _dataLocaleData_.[[&lt;_type_&gt;]].
1. Set _listFormat_.[[Templates]] to _dataLocaleTypes_.[[&lt;_style_&gt;]].
1. Let _dataLocaleTypes_ be *undefined*.
1. If _type_ is *"conjunction"*, then
1. Set _dataLocaleTypes_ to _dataLocaleData_.[[Conjunction]].
1. Else if _type_ is *"disjunction"*, then
1. Set _dataLocaleTypes_ to _dataLocaleData_.[[Disjunction]].
1. Else,
1. Set _dataLocaleTypes_ to _dataLocaleData_.[[Unit]].
1. If _style_ is *"long"*, then
1. Set _listFormat_.[[Templates]] to _dataLocaleTypes_.[[Long]].
1. Else if _style_ is *"short"*, then
1. Set _listFormat_.[[Templates]] to _dataLocaleTypes_.[[Short]].
1. Else,
1. Set _listFormat_.[[Templates]] to _dataLocaleTypes_.[[Narrow]].
1. Return _listFormat_.
</emu-alg>
</emu-clause>
Expand Down Expand Up @@ -91,12 +102,12 @@ <h1>Internal slots</h1>
</p>

<ul>
<li>[[LocaleData]].[[&lt;_locale_&gt;]] is a Record which has three fields [[conjunction]], [[disjunction]], and [[unit]]. Each of these is a Record which must have fields with the names of three formatting styles: [[long]], [[short]], and [[narrow]].</li>
<li>[[LocaleData]].[[&lt;_locale_&gt;]] is a Record which has three fields [[Conjunction]], [[Disjunction]], and [[Unit]]. Each of these is a Record which must have fields with the names of three formatting styles: [[Long]], [[Short]], and [[Narrow]].</li>
<li>Each of those fields is considered a <dfn>ListFormat template set</dfn>, which must be a List of Records with fields named: [[Pair]], [[Start]], [[Middle]], and [[End]]. Each of those fields must be a template string as specified in LDML List Format Rules. Each template string must contain the substrings *"{0}"* and *"{1}"* exactly once. The substring *"{0}"* should occur before the substring *"{1}"*.</li>
</ul>

<emu-note>
It is recommended that implementations use the locale data provided by the Common Locale Data Repository (available at <a href="https://cldr.unicode.org/">https://cldr.unicode.org/</a>). In <a href="https://unicode.org/reports/tr35/tr35-general.html#ListPatterns">LDML's listPattern</a>, `conjunction` corresponds to "standard", `disjunction` corresponds to "or", and `unit` corresponds to "unit".
It is recommended that implementations use the locale data provided by the Common Locale Data Repository (available at <a href="https://cldr.unicode.org/">https://cldr.unicode.org/</a>). In <a href="https://unicode.org/reports/tr35/tr35-general.html#ListPatterns">LDML's listPattern</a>, `Conjunction` corresponds to "standard", `disjunction` corresponds to "or", and `unit` corresponds to "unit".
</emu-note>

<emu-note>
Expand Down
Loading