Skip to content

Commit ae037f7

Browse files
committed
Underscore.js 1.9.1
1 parent 5a55dd1 commit ae037f7

File tree

6 files changed

+36
-21
lines changed

6 files changed

+36
-21
lines changed

docs/underscore.html

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ <h1>underscore.js</h1>
2727
<div class="pilwrap ">
2828
<a class="pilcrow" href="#section-1">&#182;</a>
2929
</div>
30-
<pre><code>Underscore.js <span class="hljs-number">1.9</span><span class="hljs-number">.0</span>
30+
<pre><code>Underscore.js <span class="hljs-number">1.9</span><span class="hljs-number">.1</span>
3131
http:<span class="hljs-comment">//underscorejs.org</span>
3232
(c) <span class="hljs-number">2009</span><span class="hljs-number">-2018</span> Jeremy Ashkenas, DocumentCloud and Investigative Reporters &amp; Editors
3333
Underscore may be freely distributed under the MIT license.
@@ -222,7 +222,7 @@ <h2 id="baseline-setup">Baseline setup</h2>
222222

223223
</div>
224224

225-
<div class="content"><div class='highlight'><pre> _.VERSION = <span class="hljs-string">'1.9.0'</span>;</pre></div></div>
225+
<div class="content"><div class='highlight'><pre> _.VERSION = <span class="hljs-string">'1.9.1'</span>;</pre></div></div>
226226

227227
</li>
228228

@@ -383,6 +383,10 @@ <h2 id="baseline-setup">Baseline setup</h2>
383383
};
384384
};
385385

386+
<span class="hljs-keyword">var</span> has = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">obj, path</span>) </span>{
387+
<span class="hljs-keyword">return</span> obj != <span class="hljs-literal">null</span> &amp;&amp; hasOwnProperty.call(obj, path);
388+
}
389+
386390
<span class="hljs-keyword">var</span> deepGet = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">obj, path</span>) </span>{
387391
<span class="hljs-keyword">var</span> length = path.length;
388392
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">var</span> i = <span class="hljs-number">0</span>; i &lt; length; i++) {
@@ -991,7 +995,7 @@ <h2 id="collection-functions">Collection Functions</h2>
991995
</div>
992996

993997
<div class="content"><div class='highlight'><pre> _.groupBy = group(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">result, value, key</span>) </span>{
994-
<span class="hljs-keyword">if</span> (_.has(result, key)) result[key].push(value); <span class="hljs-keyword">else</span> result[key] = [value];
998+
<span class="hljs-keyword">if</span> (has(result, key)) result[key].push(value); <span class="hljs-keyword">else</span> result[key] = [value];
995999
});</pre></div></div>
9961000

9971001
</li>
@@ -1028,7 +1032,7 @@ <h2 id="collection-functions">Collection Functions</h2>
10281032
</div>
10291033

10301034
<div class="content"><div class='highlight'><pre> _.countBy = group(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">result, value, key</span>) </span>{
1031-
<span class="hljs-keyword">if</span> (_.has(result, key)) result[key]++; <span class="hljs-keyword">else</span> result[key] = <span class="hljs-number">1</span>;
1035+
<span class="hljs-keyword">if</span> (has(result, key)) result[key]++; <span class="hljs-keyword">else</span> result[key] = <span class="hljs-number">1</span>;
10321036
});
10331037

10341038
<span class="hljs-keyword">var</span> reStrSymbol = <span class="hljs-regexp">/[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g</span>;</pre></div></div>
@@ -1147,7 +1151,7 @@ <h2 id="array-functions">Array Functions</h2>
11471151
</div>
11481152

11491153
<div class="content"><div class='highlight'><pre> _.first = _.head = _.take = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">array, n, guard</span>) </span>{
1150-
<span class="hljs-keyword">if</span> (array == <span class="hljs-literal">null</span> || array.length &lt; <span class="hljs-number">1</span>) <span class="hljs-keyword">return</span> <span class="hljs-keyword">void</span> <span class="hljs-number">0</span>;
1154+
<span class="hljs-keyword">if</span> (array == <span class="hljs-literal">null</span> || array.length &lt; <span class="hljs-number">1</span>) <span class="hljs-keyword">return</span> n == <span class="hljs-literal">null</span> ? <span class="hljs-keyword">void</span> <span class="hljs-number">0</span> : [];
11511155
<span class="hljs-keyword">if</span> (n == <span class="hljs-literal">null</span> || guard) <span class="hljs-keyword">return</span> array[<span class="hljs-number">0</span>];
11521156
<span class="hljs-keyword">return</span> _.initial(array, array.length - n);
11531157
};</pre></div></div>
@@ -1186,7 +1190,7 @@ <h2 id="array-functions">Array Functions</h2>
11861190
</div>
11871191

11881192
<div class="content"><div class='highlight'><pre> _.last = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">array, n, guard</span>) </span>{
1189-
<span class="hljs-keyword">if</span> (array == <span class="hljs-literal">null</span> || array.length &lt; <span class="hljs-number">1</span>) <span class="hljs-keyword">return</span> <span class="hljs-keyword">void</span> <span class="hljs-number">0</span>;
1193+
<span class="hljs-keyword">if</span> (array == <span class="hljs-literal">null</span> || array.length &lt; <span class="hljs-number">1</span>) <span class="hljs-keyword">return</span> n == <span class="hljs-literal">null</span> ? <span class="hljs-keyword">void</span> <span class="hljs-number">0</span> : [];
11901194
<span class="hljs-keyword">if</span> (n == <span class="hljs-literal">null</span> || guard) <span class="hljs-keyword">return</span> array[array.length - <span class="hljs-number">1</span>];
11911195
<span class="hljs-keyword">return</span> _.rest(array, <span class="hljs-built_in">Math</span>.max(<span class="hljs-number">0</span>, array.length - n));
11921196
};</pre></div></div>
@@ -1812,7 +1816,7 @@ <h2 id="function-ahem-functions">Function (ahem) Functions</h2>
18121816
<span class="hljs-keyword">var</span> memoize = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">key</span>) </span>{
18131817
<span class="hljs-keyword">var</span> cache = memoize.cache;
18141818
<span class="hljs-keyword">var</span> address = <span class="hljs-string">''</span> + (hasher ? hasher.apply(<span class="hljs-keyword">this</span>, <span class="hljs-built_in">arguments</span>) : key);
1815-
<span class="hljs-keyword">if</span> (!_.has(cache, address)) cache[address] = func.apply(<span class="hljs-keyword">this</span>, <span class="hljs-built_in">arguments</span>);
1819+
<span class="hljs-keyword">if</span> (!has(cache, address)) cache[address] = func.apply(<span class="hljs-keyword">this</span>, <span class="hljs-built_in">arguments</span>);
18161820
<span class="hljs-keyword">return</span> cache[address];
18171821
};
18181822
memoize.cache = {};
@@ -2145,7 +2149,7 @@ <h2 id="object-functions">Object Functions</h2>
21452149
</div>
21462150

21472151
<div class="content"><div class='highlight'><pre> <span class="hljs-keyword">var</span> prop = <span class="hljs-string">'constructor'</span>;
2148-
<span class="hljs-keyword">if</span> (_.has(obj, prop) &amp;&amp; !_.contains(keys, prop)) keys.push(prop);
2152+
<span class="hljs-keyword">if</span> (has(obj, prop) &amp;&amp; !_.contains(keys, prop)) keys.push(prop);
21492153

21502154
<span class="hljs-keyword">while</span> (nonEnumIdx--) {
21512155
prop = nonEnumerableProps[nonEnumIdx];
@@ -2173,7 +2177,7 @@ <h2 id="object-functions">Object Functions</h2>
21732177
<span class="hljs-keyword">if</span> (!_.isObject(obj)) <span class="hljs-keyword">return</span> [];
21742178
<span class="hljs-keyword">if</span> (nativeKeys) <span class="hljs-keyword">return</span> nativeKeys(obj);
21752179
<span class="hljs-keyword">var</span> keys = [];
2176-
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">var</span> key <span class="hljs-keyword">in</span> obj) <span class="hljs-keyword">if</span> (_.has(obj, key)) keys.push(key);</pre></div></div>
2180+
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">var</span> key <span class="hljs-keyword">in</span> obj) <span class="hljs-keyword">if</span> (has(obj, key)) keys.push(key);</pre></div></div>
21772181

21782182
</li>
21792183

@@ -3017,7 +3021,7 @@ <h2 id="object-functions">Object Functions</h2>
30173021
</div>
30183022

30193023
<div class="content"><div class='highlight'><pre> key = keys[length];
3020-
<span class="hljs-keyword">if</span> (!(_.has(b, key) &amp;&amp; eq(a[key], b[key], aStack, bStack))) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
3024+
<span class="hljs-keyword">if</span> (!(has(b, key) &amp;&amp; eq(a[key], b[key], aStack, bStack))) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
30213025
}
30223026
}</pre></div></div>
30233027

@@ -3164,7 +3168,7 @@ <h2 id="object-functions">Object Functions</h2>
31643168

31653169
<div class="content"><div class='highlight'><pre> <span class="hljs-keyword">if</span> (!_.isArguments(<span class="hljs-built_in">arguments</span>)) {
31663170
_.isArguments = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">obj</span>) </span>{
3167-
<span class="hljs-keyword">return</span> _.has(obj, <span class="hljs-string">'callee'</span>);
3171+
<span class="hljs-keyword">return</span> has(obj, <span class="hljs-string">'callee'</span>);
31683172
};
31693173
}</pre></div></div>
31703174

@@ -3290,7 +3294,7 @@ <h2 id="object-functions">Object Functions</h2>
32903294

32913295
<div class="content"><div class='highlight'><pre> _.has = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">obj, path</span>) </span>{
32923296
<span class="hljs-keyword">if</span> (!_.isArray(path)) {
3293-
<span class="hljs-keyword">return</span> obj != <span class="hljs-literal">null</span> &amp;&amp; hasOwnProperty.call(obj, path);
3297+
<span class="hljs-keyword">return</span> has(obj, path);
32943298
}
32953299
<span class="hljs-keyword">var</span> length = path.length;
32963300
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">var</span> i = <span class="hljs-number">0</span>; i &lt; length; i++) {

index.html

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@
182182
<div id="sidebar" class="interface">
183183

184184
<a class="toc_title" href="#">
185-
Underscore.js <span class="version">(1.9.0)</span>
185+
Underscore.js <span class="version">(1.9.1)</span>
186186
</a>
187187
<ul class="toc_section">
188188
<li>&raquo; <a href="https://github.com/jashkenas/underscore">GitHub Repository</a></li>
@@ -440,11 +440,11 @@ <h2>Downloads <i style="padding-left: 12px; font-size:12px;">(Right-click, and u
440440

441441
<table>
442442
<tr>
443-
<td><a href="underscore.js">Development Version (1.9.0)</a></td>
443+
<td><a href="underscore.js">Development Version (1.9.1)</a></td>
444444
<td><i>60kb, Uncompressed with Plentiful Comments</i></td>
445445
</tr>
446446
<tr>
447-
<td><a href="underscore-min.js">Production Version (1.9.0)</a></td>
447+
<td><a href="underscore-min.js">Production Version (1.9.1)</a></td>
448448
<td>
449449
<i>6.5kb, Minified and Gzipped</i>
450450
&nbsp;<small>(<a href="underscore-min.js.map">Source Map</a>)</small>
@@ -2391,6 +2391,17 @@ <h2 id="links">Links &amp; Suggested Reading</h2>
23912391

23922392
<h2 id="changelog">Change Log</h2>
23932393

2394+
<p id="1.9.1">
2395+
<b class="header">1.9.1</b> &mdash; <small><i>May 31, 2018</i></small> &mdash; <a href="https://github.com/jashkenas/underscore/compare/1.9.0...1.9.1">Diff</a> &mdash; <a href="https://cdn.rawgit.com/jashkenas/underscore/1.9.1/index.html">Docs</a><br />
2396+
<ul>
2397+
<li>
2398+
Fixes edge-case regressions from 1.9.0, including certain forms
2399+
of calling <tt>_.first</tt> and <tt>_.last</tt> on an empty array,
2400+
and passing arrays as keys to <tt>_.countBy</tt> and <tt>_.groupBy</tt>.
2401+
</li>
2402+
</ul>
2403+
</p>
2404+
23942405
<p id="1.9.0">
23952406
<b class="header">1.9.0</b> &mdash; <small><i>April 18, 2018</i></small> &mdash; <a href="https://github.com/jashkenas/underscore/compare/1.8.3...1.9.0">Diff</a> &mdash; <a href="https://cdn.rawgit.com/jashkenas/underscore/1.9.0/index.html">Docs</a><br />
23962407
<ul>

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"url": "git://github.com/jashkenas/underscore.git"
1616
},
1717
"main": "underscore.js",
18-
"version": "1.9.0",
18+
"version": "1.9.1",
1919
"devDependencies": {
2020
"coveralls": "^2.11.2",
2121
"docco": "*",

0 commit comments

Comments
 (0)