Skip to content
This repository has been archived by the owner on Nov 27, 2023. It is now read-only.

Commit

Permalink
fixup: [spec] npm run build
Browse files Browse the repository at this point in the history
  • Loading branch information
jridgewell committed Aug 1, 2023
1 parent ffba1cb commit 3a31a5c
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2696,7 +2696,7 @@
</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">
<title>Menu</title>
<path stroke-width="10" stroke-linecap="round" d="M30,60 h60 M30,30 m0,5 h60 M30,90 m0,-5 h60"></path>
</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</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-none"></span><a href="#sec-scope" title="Scope"><span class="secnum">1</span> Scope</a></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-object-constructor" title="Properties of the Object Constructor (20.1.2)"><span class="secnum">2</span> Properties of the Object Constructor (20.1.2)</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-object.groupby" title="Object.groupBy ( items, callbackfn )"><span class="secnum">2.1</span> Object.groupBy ( <var>items</var>, <var>callbackfn</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-map-constructor" title="Properties of the Map Constructor (24.1.2)"><span class="secnum">3</span> Properties of the Map Constructor (24.1.2)</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-map.groupby" title="Map.groupBy ( items, callbackfn )"><span class="secnum">3.1</span> Map.groupBy ( <var>items</var>, <var>callbackfn</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-group-by-helpers" title="Group By Helpers"><span class="secnum">4</span> Group By Helpers</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-group-by" title="GroupBy ( items, callbackfn, keyCoercion )"><span class="secnum">4.1</span> GroupBy ( <var>items</var>, <var>callbackfn</var>, <var>keyCoercion</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-add-value-to-keyed-group" title="AddValueToKeyedGroup ( groups, key, value )"><span class="secnum">4.2</span> AddValueToKeyedGroup ( <var>groups</var>, <var>key</var>, <var>value</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-copyright-and-software-license" title="Copyright &amp; Software License"><span class="secnum">A</span> Copyright &amp; Software License</a></li></ol></div></div><div id="spec-container"><h1 class="version">Stage 2 Draft / June 28, 2023</h1><h1 class="title">Array Grouping</h1>
</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</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-none"></span><a href="#sec-scope" title="Scope"><span class="secnum">1</span> Scope</a></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-object-constructor" title="Properties of the Object Constructor (20.1.2)"><span class="secnum">2</span> Properties of the Object Constructor (20.1.2)</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-object.groupby" title="Object.groupBy ( items, callbackfn )"><span class="secnum">2.1</span> Object.groupBy ( <var>items</var>, <var>callbackfn</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-map-constructor" title="Properties of the Map Constructor (24.1.2)"><span class="secnum">3</span> Properties of the Map Constructor (24.1.2)</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-map.groupby" title="Map.groupBy ( items, callbackfn )"><span class="secnum">3.1</span> Map.groupBy ( <var>items</var>, <var>callbackfn</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-group-by-helpers" title="Group By Helpers"><span class="secnum">4</span> Group By Helpers</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-group-by" title="GroupBy ( items, callbackfn, keyCoercion )"><span class="secnum">4.1</span> GroupBy ( <var>items</var>, <var>callbackfn</var>, <var>keyCoercion</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-add-value-to-keyed-group" title="AddValueToKeyedGroup ( groups, key, value )"><span class="secnum">4.2</span> AddValueToKeyedGroup ( <var>groups</var>, <var>key</var>, <var>value</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-copyright-and-software-license" title="Copyright &amp; Software License"><span class="secnum">A</span> Copyright &amp; Software License</a></li></ol></div></div><div id="spec-container"><h1 class="version">Stage 2 Draft / August 1, 2023</h1><h1 class="title">Array Grouping</h1>
<emu-clause id="sec-scope">
<h1><span class="secnum">1</span> Scope</h1>
Expand All @@ -2717,7 +2717,7 @@ <h1><span class="secnum">2.1</span> Object.groupBy ( <var>items</var>, <var>call
<p>The return value of <code>groupBy</code> is an object that does not inherit from %Object.prototype%.</p>
</div></emu-note>
<p>When the <code>groupBy</code> method is called with two arguments, the following steps are taken:</p>
<emu-alg><ol><li>Let <var>groups</var> be ?&nbsp;<emu-xref aoid="GroupBy" id="_ref_0"><a href="#sec-group-by">GroupBy</a></emu-xref>(<var>items</var>, <var>callbackfn</var>, <emu-const>property</emu-const>).</li><li>Let <var>obj</var> be OrdinaryObjectCreate(<emu-val>null</emu-val>).</li><li>For each Record { <var class="field">[[Key]]</var>, <var class="field">[[Elements]]</var> } <var>g</var> of <var>groups</var>, do<ol><li>Let <var>elements</var> be CreateArrayFromList(<var>g</var>.<var class="field">[[Elements]]</var>).</li><li>Perform !&nbsp;CreateDataPropertyOrThrow(<var>obj</var>, <var>g</var>.<var class="field">[[Key]]</var>, <var>elements</var>).</li></ol></li><li>Return <var>obj</var>.</li></ol></emu-alg>
<emu-alg><ol><li>Let <var>groups</var> be ?&nbsp;<emu-xref aoid="GroupBy" id="_ref_0"><a href="#sec-group-by">GroupBy</a></emu-xref>(<var>items</var>, <var>callbackfn</var>, <emu-const>property</emu-const>).</li><li>Let <var>obj</var> be OrdinaryObjectCreate(<emu-val>null</emu-val>).</li><li>For each Record { <var class="field">[[Key]]</var>, <var class="field">[[Elements]]</var>&nbsp;} <var>g</var> of <var>groups</var>, do<ol><li>Let <var>elements</var> be CreateArrayFromList(<var>g</var>.<var class="field">[[Elements]]</var>).</li><li>Perform !&nbsp;CreateDataPropertyOrThrow(<var>obj</var>, <var>g</var>.<var class="field">[[Key]]</var>, <var>elements</var>).</li></ol></li><li>Return <var>obj</var>.</li></ol></emu-alg>
</emu-clause>
</ins>
</emu-clause>
Expand All @@ -2734,7 +2734,7 @@ <h1><span class="secnum">3.1</span> Map.groupBy ( <var>items</var>, <var>callbac
<p>The return value of <code>groupBy</code> is a Map.</p>
</div></emu-note>
<p>When the <code>groupBy</code> method is called with two arguments, the following steps are taken:</p>
<emu-alg><ol><li>Let <var>groups</var> be ?&nbsp;<emu-xref aoid="GroupBy" id="_ref_1"><a href="#sec-group-by">GroupBy</a></emu-xref>(<var>items</var>, <var>callbackfn</var>, <emu-const>zero</emu-const>).</li><li>Let <var>map</var> be !&nbsp;Construct(%Map%).</li><li>For each Record { <var class="field">[[Key]]</var>, <var class="field">[[Elements]]</var> } <var>g</var> of <var>groups</var>, do<ol><li>Let <var>elements</var> be CreateArrayFromList(<var>g</var>.<var class="field">[[Elements]]</var>).</li><li>Let <var>entry</var> be the Record { <var class="field">[[Key]]</var>: <var>g</var>.<var class="field">[[Key]]</var>, <var class="field">[[Value]]</var>: <var>elements</var> }.</li><li>Append <var>entry</var> to <var>map</var>.<var class="field">[[MapData]]</var>.</li></ol></li><li>Return <var>map</var>.</li></ol></emu-alg>
<emu-alg><ol><li>Let <var>groups</var> be ?&nbsp;<emu-xref aoid="GroupBy" id="_ref_1"><a href="#sec-group-by">GroupBy</a></emu-xref>(<var>items</var>, <var>callbackfn</var>, <emu-const>zero</emu-const>).</li><li>Let <var>map</var> be !&nbsp;Construct(%Map%).</li><li>For each Record { <var class="field">[[Key]]</var>, <var class="field">[[Elements]]</var>&nbsp;} <var>g</var> of <var>groups</var>, do<ol><li>Let <var>elements</var> be CreateArrayFromList(<var>g</var>.<var class="field">[[Elements]]</var>).</li><li>Let <var>entry</var> be the Record { <var class="field">[[Key]]</var>: <var>g</var>.<var class="field">[[Key]]</var>, <var class="field">[[Value]]</var>: <var>elements</var>&nbsp;}.</li><li>Append <var>entry</var> to <var>map</var>.<var class="field">[[MapData]]</var>.</li></ol></li><li>Return <var>map</var>.</li></ol></emu-alg>
</emu-clause>
</ins>
</emu-clause>
Expand All @@ -2746,15 +2746,15 @@ <h1><span class="secnum">4</span> Group By Helpers</h1>
<emu-clause id="sec-group-by" type="abstract operation" aoid="GroupBy">
<h1><span class="secnum">4.1</span> GroupBy ( <var>items</var>, <var>callbackfn</var>, <var>keyCoercion</var> )</h1>
<p>The abstract operation GroupBy takes arguments <var>items</var> (an ECMAScript language value), <var>callbackfn</var> (an ECMAScript language value), and <var>keyCoercion</var> (<emu-const>property</emu-const> or <emu-const>zero</emu-const>) and returns either a normal completion containing a List of Records with fields <var class="field">[[Key]]</var> (an ECMAScript language value) and <var class="field">[[Elements]]</var> (a List of ECMAScript language values), or a throw completion. It performs the following steps when called:</p>
<emu-alg><ol><li>Perform ?&nbsp;RequireObjectCoercible(<var>items</var>).</li><li>If IsCallable(<var>callbackfn</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>groups</var> be a new empty List.</li><li>Let <var>iteratorRecord</var> be ?&nbsp;GetIterator(<var>items</var>).</li><li>Let <var>k</var> be 0.</li><li>Repeat,<ol><li>If <var>k</var> ≥ 2<sup>53</sup> - 1, then<ol><li>Let <var>error</var> be ThrowCompletion(a newly created <emu-val>TypeError</emu-val> object).</li><li>Return ?&nbsp;IteratorClose(<var>iteratorRecord</var>, <var>error</var>).</li></ol></li><li>Let <var>next</var> be ?&nbsp;IteratorStep(<var>iteratorRecord</var>).</li><li>If <var>next</var> is <emu-val>false</emu-val>, then<ol><li>Return <var>groups</var>.</li></ol></li><li>Let <var>value</var> be ?&nbsp;IteratorValue(<var>next</var>).</li><li>Let <var>key</var> be Completion(Call(<var>callbackfn</var>, <emu-val>undefined</emu-val>, « <var>value</var>, 𝔽(<var>k</var>) »)).</li><li>IfAbruptCloseIterator(<var>key</var>, <var>iteratorRecord</var>).</li><li>If <var>keyCoercion</var> is <emu-const>property</emu-const>, then<ol><li>Set <var>key</var> to Completion(ToPropertyKey(<var>key</var>)).</li><li>IfAbruptCloseIterator(<var>key</var>, <var>iteratorRecord</var>).</li></ol></li><li>Else,<ol><li>Assert: <var>keyCoercion</var> is <emu-const>zero</emu-const>.</li><li>If <var>key</var> is <emu-val>-0</emu-val><sub>𝔽</sub>, set <var>key</var> to <emu-val>+0</emu-val><sub>𝔽</sub>.</li></ol></li><li>Perform <emu-xref aoid="AddValueToKeyedGroup" id="_ref_2"><a href="#sec-add-value-to-keyed-group">AddValueToKeyedGroup</a></emu-xref>(<var>groups</var>, <var>key</var>, <var>value</var>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li></ol></emu-alg>
<emu-alg><ol><li>Perform ?&nbsp;RequireObjectCoercible(<var>items</var>).</li><li>If IsCallable(<var>callbackfn</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>groups</var> be a new empty List.</li><li>Let <var>iteratorRecord</var> be ?&nbsp;GetIterator(<var>items</var>).</li><li>Let <var>k</var> be 0.</li><li>Repeat,<ol><li>If <var>k</var> ≥ 2<sup>53</sup> - 1, then<ol><li>Let <var>error</var> be ThrowCompletion(a newly created <emu-val>TypeError</emu-val> object).</li><li>Return ?&nbsp;IteratorClose(<var>iteratorRecord</var>, <var>error</var>).</li></ol></li><li>Let <var>next</var> be ?&nbsp;IteratorStep(<var>iteratorRecord</var>).</li><li>If <var>next</var> is <emu-val>false</emu-val>, then<ol><li>Return <var>groups</var>.</li></ol></li><li>Let <var>value</var> be ?&nbsp;IteratorValue(<var>next</var>).</li><li>Let <var>key</var> be Completion(Call(<var>callbackfn</var>, <emu-val>undefined</emu-val>, « <var>value</var>, 𝔽(<var>k</var>)&nbsp;»)).</li><li>IfAbruptCloseIterator(<var>key</var>, <var>iteratorRecord</var>).</li><li>If <var>keyCoercion</var> is <emu-const>property</emu-const>, then<ol><li>Set <var>key</var> to Completion(ToPropertyKey(<var>key</var>)).</li><li>IfAbruptCloseIterator(<var>key</var>, <var>iteratorRecord</var>).</li></ol></li><li>Else,<ol><li>Assert: <var>keyCoercion</var> is <emu-const>zero</emu-const>.</li><li>If <var>key</var> is <emu-val>-0</emu-val><sub>𝔽</sub>, set <var>key</var> to <emu-val>+0</emu-val><sub>𝔽</sub>.</li></ol></li><li>Perform <emu-xref aoid="AddValueToKeyedGroup" id="_ref_2"><a href="#sec-add-value-to-keyed-group">AddValueToKeyedGroup</a></emu-xref>(<var>groups</var>, <var>key</var>, <var>value</var>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li></ol></emu-alg>
</emu-clause>
</ins>
<ins class="block">
<emu-clause id="sec-add-value-to-keyed-group" type="abstract operation" aoid="AddValueToKeyedGroup">
<h1><span class="secnum">4.2</span> AddValueToKeyedGroup ( <var>groups</var>, <var>key</var>, <var>value</var> )</h1>
<p>The abstract operation AddValueToKeyedGroup takes arguments <var>groups</var> (a List of Records that have <var class="field">[[Key]]</var> and <var class="field">[[Elements]]</var> fields), <var>key</var> (an ECMAScript language value), and <var>value</var> (an ECMAScript language value) and returns <emu-const>unused</emu-const>. It performs the following steps when called:</p>
<emu-alg><ol><li>For each Record { <var class="field">[[Key]]</var>, <var class="field">[[Elements]]</var> } <var>g</var> of <var>groups</var>, do<ol><li>If SameValue(<var>g</var>.<var class="field">[[Key]]</var>, <var>key</var>) is <emu-val>true</emu-val>, then<ol><li>Assert: exactly one element of <var>groups</var> meets this criteria.</li><li>Append <var>value</var> to <var>g</var>.<var class="field">[[Elements]]</var>.</li><li>Return <emu-const>unused</emu-const>.</li></ol></li></ol></li><li>Let <var>group</var> be the Record { <var class="field">[[Key]]</var>: <var>key</var>, <var class="field">[[Elements]]</var>: « <var>value</var> » }.</li><li>Append <var>group</var> to <var>groups</var>.</li><li>Return <emu-const>unused</emu-const>.</li></ol></emu-alg>
<emu-alg><ol><li>For each Record { <var class="field">[[Key]]</var>, <var class="field">[[Elements]]</var>&nbsp;} <var>g</var> of <var>groups</var>, do<ol><li>If SameValue(<var>g</var>.<var class="field">[[Key]]</var>, <var>key</var>) is <emu-val>true</emu-val>, then<ol><li>Assert: exactly one element of <var>groups</var> meets this criteria.</li><li>Append <var>value</var> to <var>g</var>.<var class="field">[[Elements]]</var>.</li><li>Return <emu-const>unused</emu-const>.</li></ol></li></ol></li><li>Let <var>group</var> be the Record { <var class="field">[[Key]]</var>: <var>key</var>, <var class="field">[[Elements]]</var>: « <var>value</var>&nbsp;»&nbsp;}.</li><li>Append <var>group</var> to <var>groups</var>.</li><li>Return <emu-const>unused</emu-const>.</li></ol></emu-alg>
</emu-clause>
</ins>
</emu-clause><emu-annex id="sec-copyright-and-software-license">
Expand Down

0 comments on commit 3a31a5c

Please sign in to comment.