Skip to content

Commit 6be81c4

Browse files
ryzokukenptomato
authored andcommitted
Format and cleanup spec
1 parent 56c23b9 commit 6be81c4

File tree

2 files changed

+52
-69
lines changed

2 files changed

+52
-69
lines changed

index.html

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<!doctype html>
22
<head><meta name="viewport" content="width=device-width, initial-scale=1"><meta charset="utf-8"><meta property="og:image" content="https://tc39.es/ecmarkup/ecma-logo.png"><meta property="og:title" content="Intl era and monthCode Proposal"><meta property="og:description" content="Abstract Operations for Temporal.Calendar Objects
3+
34
45
56
CalendarSupportsEra (
@@ -13,10 +14,7 @@
1314
1415
1516
16-
1. If _">
17-
<link rel="stylesheet" href="./spec.css">
18-
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.4/styles/github.min.css">
19-
<script src="./spec.js"></script>
17+
1. If">
2018
<title>Intl era and monthCode Proposal</title><script>'use strict';
2119
let sdoBox = {
2220
init() {
@@ -3960,9 +3958,11 @@
39603958
</ul></div><div id="menu-toggle"><svg xmlns="http://www.w3.org/2000/svg" style="width:100%; height:100%; stroke:currentColor" viewBox="0 0 120 120" width="54" height="54">
39613959
<title>Menu</title>
39623960
<path stroke-width="10" stroke-linecap="round" d="M30,60 h60 M30,30 m0,5 h60 M30,90 m0,-5 h60"></path>
3963-
</svg></div><div id="menu-spacer" class="menu-spacer"></div><div id="menu"><div id="menu-search"><input type="text" id="menu-search-box" placeholder="Search..."><div id="menu-search-results" class="inactive"></div></div><div id="menu-pins"><div class="menu-pane-header">Pins<button class="unpin-all">clear</button></div><ul id="menu-pins-list"></ul></div><div class="menu-pane-header">Table of Contents</div><div id="menu-toc"><ol class="toc"><li><span class="item-toggle">+</span><a href="#sup-temporal-calendar-abstract-ops" title="Abstract Operations for Temporal.Calendar Objects"><span class="secnum">1</span> Abstract Operations for Temporal.Calendar Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-temporal-calendarsupportsera" title="CalendarSupportsEra ( calendar )"><span class="secnum">1.1</span> CalendarSupportsEra ( <var>calendar</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-temporal-canonicalizeeraincalendar" title="CanonicalizeEraInCalendar ( calendar, era )"><span class="secnum">1.2</span> CanonicalizeEraInCalendar ( <var>calendar</var>, <var>era</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-temporal-isvalidmonthecodeforcalendar" title="IsValidMonthCodeForCalendar ( calendar, monthCode )"><span class="secnum">1.3</span> IsValidMonthCodeForCalendar ( <var>calendar</var>, <var>monthCode</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-temporal-isvaliderayearforcalendar" title="IsValidEraYearForCalendar ( calendar, era, eraYear )"><span class="secnum">1.4</span> IsValidEraYearForCalendar ( <var>calendar</var>, <var>era</var>, <var>eraYear</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sup-temporal-calendardateera" title="CalendarDateEra ( calendar, date )"><span class="secnum">1.5</span> CalendarDateEra ( <var>calendar</var>, <var>date</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sup-temporal-calendardateerayear" title="CalendarDateEraYear ( calendar, date )"><span class="secnum">1.6</span> CalendarDateEraYear ( <var>calendar</var>, <var>date</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sup-temporal-calendardatearithmeticyear" title="CalendarDateArithmeticYear ( calendar, date )"><span class="secnum">1.7</span> CalendarDateArithmeticYear ( <var>calendar</var>, <var>date</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sup-temporal-calendardatefields" title="CalendarDateFields ( calendar, fields )"><span class="secnum">1.8</span> CalendarDateFields ( <var>calendar</var>, <var>fields</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sup-temporal-calendardatemergefields" title="CalendarDateMergeFields ( calendar, fields, additionalFields )"><span class="secnum">1.9</span> CalendarDateMergeFields ( <var>calendar</var>, <var>fields</var>, <var>additionalFields</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-copyright-and-software-license" title="Copyright &amp; Software License">Copyright &amp; Software License</a></li></ol></div></div><div id="spec-container"><h1 class="version">Stage 2 Draft / July 3, 2025</h1><h1 class="title">Intl era and monthCode Proposal</h1>
3961+
</svg></div><div id="menu-spacer" class="menu-spacer"></div><div id="menu"><div id="menu-search"><input type="text" id="menu-search-box" placeholder="Search..."><div id="menu-search-results" class="inactive"></div></div><div id="menu-pins"><div class="menu-pane-header">Pins<button class="unpin-all">clear</button></div><ul id="menu-pins-list"></ul></div><div class="menu-pane-header">Table of Contents</div><div id="menu-toc"><ol class="toc"><li><span class="item-toggle">+</span><a href="#sup-temporal-calendar-abstract-ops" title="Abstract Operations for Temporal.Calendar Objects"><span class="secnum">1</span> Abstract Operations for Temporal.Calendar Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-temporal-calendarsupportsera" title="CalendarSupportsEra ( calendar )"><span class="secnum">1.1</span> CalendarSupportsEra ( <var>calendar</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-temporal-canonicalizeeraincalendar" title="CanonicalizeEraInCalendar ( calendar, era )"><span class="secnum">1.2</span> CanonicalizeEraInCalendar ( <var>calendar</var>, <var>era</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-temporal-isvalidmonthecodeforcalendar" title="IsValidMonthCodeForCalendar ( calendar, monthCode )"><span class="secnum">1.3</span> IsValidMonthCodeForCalendar ( <var>calendar</var>, <var>monthCode</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-temporal-isvaliderayearforcalendar" title="IsValidEraYearForCalendar ( calendar, era, eraYear )"><span class="secnum">1.4</span> IsValidEraYearForCalendar ( <var>calendar</var>, <var>era</var>, <var>eraYear</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sup-temporal-calendardateera" title="CalendarDateEra ( calendar, date )"><span class="secnum">1.5</span> CalendarDateEra ( <var>calendar</var>, <var>date</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sup-temporal-calendardateerayear" title="CalendarDateEraYear ( calendar, date )"><span class="secnum">1.6</span> CalendarDateEraYear ( <var>calendar</var>, <var>date</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sup-temporal-calendardatearithmeticyear" title="CalendarDateArithmeticYear ( calendar, date )"><span class="secnum">1.7</span> CalendarDateArithmeticYear ( <var>calendar</var>, <var>date</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sup-temporal-calendardatefields" title="CalendarDateFields ( calendar, fields )"><span class="secnum">1.8</span> CalendarDateFields ( <var>calendar</var>, <var>fields</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sup-temporal-calendardatemergefields" title="CalendarDateMergeFields ( calendar, fields, additionalFields )"><span class="secnum">1.9</span> CalendarDateMergeFields ( <var>calendar</var>, <var>fields</var>, <var>additionalFields</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-copyright-and-software-license" title="Copyright &amp; Software License">Copyright &amp; Software License</a></li></ol></div></div><div id="spec-container"><h1 class="version">Stage 2 Draft / July 7, 2025</h1><h1 class="title">Intl era and monthCode Proposal</h1>
3962+
39643963
<emu-clause id="sup-temporal-calendar-abstract-ops">
39653964
<h1><span class="secnum">1</span> Abstract Operations for Temporal.Calendar Objects</h1>
3965+
39663966
<emu-clause id="sec-temporal-calendarsupportsera" type="abstract operation" aoid="CalendarSupportsEra">
39673967
<h1><span class="secnum">1.1</span> CalendarSupportsEra ( <var>calendar</var> )</h1>
39683968
<p>The abstract operation CalendarSupportsEra takes argument <var>calendar</var> (a String) and returns a Boolean.
@@ -4194,7 +4194,7 @@ <h1><span class="secnum">1.1</span> CalendarSupportsEra ( <var>calendar</var> )<
41944194
<emu-clause id="sec-temporal-canonicalizeeraincalendar" type="abstract operation" aoid="CanonicalizeEraInCalendar">
41954195
<h1><span class="secnum">1.2</span> CanonicalizeEraInCalendar ( <var>calendar</var>, <var>era</var> )</h1>
41964196
<p>The abstract operation CanonicalizeEraInCalendar takes arguments <var>calendar</var> (a String) and <var>era</var> (a String) and returns a String or <emu-val>undefined</emu-val>.
4197-
The following algorithm refers to the era data from <a href="https://unicode.org/reports/tr35/tr35-dates.html#Calendar_Data">UTS 35's Supplemental Calendar Data</a>.
4197+
The following algorithm refers to the era data from <a href="https://unicode.org/reports/tr35/tr35-dates.html#Calendar_Data">UTS 35's Supplemental Calendar Data</a>.
41984198
It performs the following steps when called:</p>
41994199
<emu-alg><ol><li>For each row of <emu-xref href="#table-eras" id="_ref_1"><a href="#table-eras">Table 1</a></emu-xref>, do<ol><li>Let <var>cal</var> be the Calendar value of the current row.</li><li>If <var>cal</var> is equal to <var>calendar</var>, then<ol><li>Let <var>e</var> be the Era value of the current row.</li><li>If <var>e</var> is equal to <var>era</var>, return <var>era</var>.</li><li>Let <var>aliases</var> be a <emu-xref href="#sec-list-and-record-specification-type"><a href="https://tc39.es/ecma262/#sec-list-and-record-specification-type">List</a></emu-xref> whose elements are the strings given in the Aliases column of the row.</li><li>If <var>aliases</var> contains <var>era</var>, return <var>era</var>.</li></ol></li></ol></li><li>Return <emu-val>undefined</emu-val>.</li></ol></emu-alg>
42004200
</emu-clause>
@@ -4244,27 +4244,23 @@ <h1><span class="secnum">1.3</span> IsValidMonthCodeForCalendar ( <var>calendar<
42444244
<emu-clause id="sec-temporal-isvaliderayearforcalendar" type="abstract operation" aoid="IsValidEraYearForCalendar">
42454245
<h1><span class="secnum">1.4</span> IsValidEraYearForCalendar ( <var>calendar</var>, <var>era</var>, <var>eraYear</var> )</h1>
42464246
<p>The abstract operation IsValidEraYearForCalendar takes arguments <var>calendar</var> (a String), <var>era</var> (a String), and <var>eraYear</var> (a <emu-xref href="#integer"><a href="https://tc39.es/ecma262/#integer">integer</a></emu-xref>) and returns a Boolean.
4247-
The following algorithm refers to the era data from <a href="https://unicode.org/reports/tr35/tr35-dates.html#Calendar_Data">UTS 35's Supplemental Calendar Data</a>.
4247+
The following algorithm refers to the era data from <a href="https://unicode.org/reports/tr35/tr35-dates.html#Calendar_Data">UTS 35's Supplemental Calendar Data</a>.
42484248
It performs the following steps when called:</p>
42494249
<emu-alg><ol><li>Let <var>era</var> be <emu-xref aoid="CanonicalizeEraInCalendar" id="_ref_6"><a href="#sec-temporal-canonicalizeeraincalendar">CanonicalizeEraInCalendar</a></emu-xref>(<var>calendar</var>, <var>era</var>).</li><li>If <var>era</var> is <emu-val>undefined</emu-val>, return <emu-val>false</emu-val>.</li><li>Let <var>r</var> be the row in <emu-xref href="#table-eras" id="_ref_4"><a href="#table-eras">Table 1</a></emu-xref> which the <var>calendar</var> is in the Calendar column and the <var>era</var> is in the Era column.</li><li>Let <var>min</var> be the value given in the <emu-val>"Minimum eraYear"</emu-val> column of <var>r</var>.</li><li>Let <var>max</var> be the value given in the <emu-val>"Maximum eraYear"</emu-val> column of <var>r</var>.</li><li>If <var>eraYear</var> &lt; <var>min</var>, return <emu-val>false</emu-val>.</li><li>If <var>eraYear</var> &gt; <var>max</var>, return <emu-val>false</emu-val>.</li><li>Return <emu-val>true</emu-val>.</li></ol></emu-alg>
42504250
</emu-clause>
42514251
42524252
<emu-clause id="sup-temporal-calendardateera" type="abstract operation" aoid="CalendarDateEra">
42534253
<h1><span class="secnum">1.5</span> CalendarDateEra ( <var>calendar</var>, <var>date</var> )</h1>
42544254
<p>The abstract operation CalendarDateEra takes arguments <var>calendar</var> (a String) and <var>date</var> (a Temporal.PlainDateTime, Temporal.PlainDate, or Temporal.PlainYearMonth) and returns a String or <emu-val>undefined</emu-val>. It performs <emu-xref href="#implementation-defined"><a href="https://tc39.es/ecma262/#implementation-defined">implementation-defined</a></emu-xref> processing to find the era for the date corresponding to <var>date</var> in the context of the calendar represented by <var>calendar</var> and returns a lowercase String value representing that era, or <emu-val>undefined</emu-val> for calendars that do not have eras.</p>
4255-
<p>
4256-
This definition supersedes the definition provided in "Temporal proposal", #sec-temporal-calendardateera.
4257-
</p>
4255+
<p>This definition supersedes the definition provided in "Temporal proposal", #sec-temporal-calendardateera.</p>
42584256
<emu-alg><ol><li>If <emu-xref aoid="CalendarSupportsEra" id="_ref_7"><a href="#sec-temporal-calendarsupportsera">CalendarSupportsEra</a></emu-xref>(<var>calendar</var>) is <emu-val>false</emu-val>, return <emu-val>undefined</emu-val>.</li><li>Let <var>era</var> be the String to indicate the era corresponding to <var>date</var> in the context of the calendar represented by <var>calendar</var> from an <emu-xref href="#implementation-defined"><a href="https://tc39.es/ecma262/#implementation-defined">implementation-defined</a></emu-xref> processing.</li><li>Return <emu-xref aoid="CanonicalizeEraInCalendar" id="_ref_8"><a href="#sec-temporal-canonicalizeeraincalendar">CanonicalizeEraInCalendar</a></emu-xref>(<var>calendar</var>, <var>era</var>).</li></ol></emu-alg>
42594257
</emu-clause>
42604258
42614259
<emu-clause id="sup-temporal-calendardateerayear" type="abstract operation" aoid="CalendarDateEraYear">
42624260
<h1><span class="secnum">1.6</span> CalendarDateEraYear ( <var>calendar</var>, <var>date</var> )</h1>
42634261
<p>The abstract operation CalendarDateEraYear takes arguments <var>calendar</var> (a String) and <var>date</var> (a Temporal.PlainDateTime, Temporal.PlainDate, or Temporal.PlainYearMonth) and returns an <emu-xref href="#integer"><a href="https://tc39.es/ecma262/#integer">integer</a></emu-xref> or <emu-val>undefined</emu-val>. It performs <emu-xref href="#implementation-defined"><a href="https://tc39.es/ecma262/#implementation-defined">implementation-defined</a></emu-xref> processing to find the era for the date corresponding to <var>date</var> in the context of the calendar represented by <var>calendar</var> and returns an <emu-xref href="#integer"><a href="https://tc39.es/ecma262/#integer">integer</a></emu-xref> representing the ordinal position of the year of <var>date</var> in that era, or <emu-val>undefined</emu-val> for calendars that do not have eras.</p>
42644262
4265-
<p>
4266-
This definition supersedes the definition provided in "Temporal proposal", #sec-temporal-calendardateerayear.
4267-
</p>
4263+
<p>This definition supersedes the definition provided in "Temporal proposal", #sec-temporal-calendardateerayear.</p>
42684264
<emu-alg><ol><li>If <emu-xref aoid="CalendarSupportsEra" id="_ref_9"><a href="#sec-temporal-calendarsupportsera">CalendarSupportsEra</a></emu-xref>(<var>calendar</var>) is <emu-val>false</emu-val>, return <emu-val>undefined</emu-val>.</li><li>Let <var>eraYear</var> be the <emu-xref href="#integer"><a href="https://tc39.es/ecma262/#integer">integer</a></emu-xref> to indicate the era year corresponding to <var>date</var> in the context of the calendar represented by <var>calendar</var> from an <emu-xref href="#implementation-defined"><a href="https://tc39.es/ecma262/#implementation-defined">implementation-defined</a></emu-xref> processing.</li><li><emu-xref href="#assert"><a href="https://tc39.es/ecma262/#assert">Assert</a></emu-xref>: <var>eraYear</var> is an <emu-xref href="#integer"><a href="https://tc39.es/ecma262/#integer">integer</a></emu-xref>.</li><li>Return <var>eraYear</var>.</li></ol></emu-alg>
42694265
<emu-note><span class="note">Note</span><div class="note-contents">
42704266
Era years are 1-indexed for many calendars, but not all (e.g., the eras of the Burmese calendar each start with a year 0). Years can also advance opposite the flow of time (as for BCE years in the Gregorian calendar).
@@ -4361,18 +4357,14 @@ <h1><span class="secnum">1.7</span> CalendarDateArithmeticYear ( <var>calendar</
43614357
<h1><span class="secnum">1.8</span> CalendarDateFields ( <var>calendar</var>, <var>fields</var> )</h1>
43624358
<p>The abstract operation CalendarDateFields takes arguments <var>calendar</var> (a String) and <var>fields</var> (a <emu-xref href="#sec-list-and-record-specification-type"><a href="https://tc39.es/ecma262/#sec-list-and-record-specification-type">List</a></emu-xref> of Strings) and returns a <emu-xref href="#sec-list-and-record-specification-type"><a href="https://tc39.es/ecma262/#sec-list-and-record-specification-type">List</a></emu-xref> of Strings. It takes a list of standard fields in <var>fields</var> that are necessary for a given operation and returns a new list by adding relevant calendar-specific fields for the calendar represented by <var>calendar</var>. This is relevant for calendars which accept fields other than the standard set of built-in calendar fields.</p>
43634359
4364-
<p>
4365-
This definition supersedes the definition provided in "Temporal proposal", #sec-temporal-calendardatefields.
4366-
</p>
4360+
<p>This definition supersedes the definition provided in "Temporal proposal", #sec-temporal-calendardatefields.</p>
43674361
<emu-alg><ol><li>If <var>fields</var> contains an element equal to <emu-val>"year"</emu-val> and <emu-xref aoid="CalendarSupportsEra" id="_ref_10"><a href="#sec-temporal-calendarsupportsera">CalendarSupportsEra</a></emu-xref>(<var>calendar</var>) is <emu-val>true</emu-val>, then<ol><li>Append <emu-val>"era"</emu-val> to <var>fields</var>.</li><li>Append <emu-val>"eraYear"</emu-val> to <var>fields</var>.</li></ol></li><li>Return <var>fields</var>.</li></ol></emu-alg>
43684362
</emu-clause>
43694363
43704364
<emu-clause id="sup-temporal-calendardatemergefields" type="abstract operation" aoid="CalendarDateMergeFields">
43714365
<h1><span class="secnum">1.9</span> CalendarDateMergeFields ( <var>calendar</var>, <var>fields</var>, <var>additionalFields</var> )</h1>
43724366
<p>The abstract operation CalendarDateMergeFields takes arguments <var>calendar</var> (a String), <var>fields</var> (an Object), and <var>additionalFields</var> (an Object) and returns either a <emu-xref href="#sec-completion-record-specification-type"><a href="https://tc39.es/ecma262/#sec-completion-record-specification-type">normal completion containing</a></emu-xref> an Object or an <emu-xref href="#sec-completion-record-specification-type"><a href="https://tc39.es/ecma262/#sec-completion-record-specification-type">abrupt completion</a></emu-xref>. It takes two Objects of calendar-specific fields for the calendar represented by <var>calendar</var> in <var>fields</var> and <var>additionalFields</var> and returns a new Object that includes both sets of fields. The values in <var>additionalFields</var> should supersede the values in <var>fields</var>. Also, the returned Object must be free of ambiguity or conflicts. This is relevant for calendars which accept fields other than the standard set of built-in calendar fields.</p>
4373-
<p>
4374-
This definition supersedes the definition provided in "Temporal proposal", #sec-temporal-calendardatemergefields.
4375-
</p>
4367+
<p>This definition supersedes the definition provided in "Temporal proposal", #sec-temporal-calendardatemergefields.</p>
43764368
<emu-note><span class="note">Note</span><div class="note-contents">
43774369
For example, if <var>fields</var> contains <emu-val>"year"</emu-val> but <var>additionalFields</var> contains <emu-val>"era"</emu-val> and <emu-val>"eraYear"</emu-val>, then the returned list must not include <emu-val>"year"</emu-val> in order to avoid ambiguity or conflict between different ways of specifying the year.
43784370
</div></emu-note>

0 commit comments

Comments
 (0)