@@ -25,14 +25,14 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
25
25
< div class ='fl pad1y space-right2 '>
26
26
< span class ="strong "> 100% </ span >
27
27
< span class ="quiet "> Statements</ span >
28
- < span class ='fraction '> 92/92 </ span >
28
+ < span class ='fraction '> 103/103 </ span >
29
29
</ div >
30
30
31
31
32
32
< div class ='fl pad1y space-right2 '>
33
33
< span class ="strong "> 100% </ span >
34
34
< span class ="quiet "> Branches</ span >
35
- < span class ='fraction '> 3/3 </ span >
35
+ < span class ='fraction '> 6/6 </ span >
36
36
</ div >
37
37
38
38
@@ -46,7 +46,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
46
46
< div class ='fl pad1y space-right2 '>
47
47
< span class ="strong "> 100% </ span >
48
48
< span class ="quiet "> Lines</ span >
49
- < span class ='fraction '> 92/92 </ span >
49
+ < span class ='fraction '> 103/103 </ span >
50
50
</ div >
51
51
52
52
@@ -155,7 +155,18 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
155
155
< a name ='L90 '> </ a > < a href ='#L90 '> 90</ a >
156
156
< a name ='L91 '> </ a > < a href ='#L91 '> 91</ a >
157
157
< a name ='L92 '> </ a > < a href ='#L92 '> 92</ a >
158
- < a name ='L93 '> </ a > < a href ='#L93 '> 93</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
158
+ < a name ='L93 '> </ a > < a href ='#L93 '> 93</ a >
159
+ < a name ='L94 '> </ a > < a href ='#L94 '> 94</ a >
160
+ < a name ='L95 '> </ a > < a href ='#L95 '> 95</ a >
161
+ < a name ='L96 '> </ a > < a href ='#L96 '> 96</ a >
162
+ < a name ='L97 '> </ a > < a href ='#L97 '> 97</ a >
163
+ < a name ='L98 '> </ a > < a href ='#L98 '> 98</ a >
164
+ < a name ='L99 '> </ a > < a href ='#L99 '> 99</ a >
165
+ < a name ='L100 '> </ a > < a href ='#L100 '> 100</ a >
166
+ < a name ='L101 '> </ a > < a href ='#L101 '> 101</ a >
167
+ < a name ='L102 '> </ a > < a href ='#L102 '> 102</ a >
168
+ < a name ='L103 '> </ a > < a href ='#L103 '> 103</ a >
169
+ < a name ='L104 '> </ a > < a href ='#L104 '> 104</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
159
170
< span class ="cline-any cline-yes "> 1x</ span >
160
171
< span class ="cline-any cline-yes "> 1x</ span >
161
172
< span class ="cline-any cline-yes "> 1x</ span >
@@ -219,29 +230,40 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
219
230
< span class ="cline-any cline-yes "> 1x</ span >
220
231
< span class ="cline-any cline-yes "> 1x</ span >
221
232
< span class ="cline-any cline-yes "> 1x</ span >
222
- < span class ="cline-any cline-yes "> 6x</ span >
223
- < span class ="cline-any cline-yes "> 6x</ span >
224
- < span class ="cline-any cline-yes "> 6x</ span >
225
- < span class ="cline-any cline-yes "> 6x</ span >
226
- < span class ="cline-any cline-yes "> 6x</ span >
227
- < span class ="cline-any cline-yes "> 6x</ span >
228
- < span class ="cline-any cline-yes "> 6x</ span >
229
- < span class ="cline-any cline-yes "> 6x</ span >
230
- < span class ="cline-any cline-yes "> 6x</ span >
231
- < span class ="cline-any cline-yes "> 6x</ span >
232
- < span class ="cline-any cline-yes "> 6x</ span >
233
- < span class ="cline-any cline-yes "> 6x</ span >
234
- < span class ="cline-any cline-yes "> 6x</ span >
235
- < span class ="cline-any cline-yes "> 6x</ span >
236
- < span class ="cline-any cline-yes "> 6x</ span >
233
+ < span class ="cline-any cline-yes "> 1x</ span >
234
+ < span class ="cline-any cline-yes "> 1x</ span >
235
+ < span class ="cline-any cline-yes "> 21x</ span >
236
+ < span class ="cline-any cline-yes "> 21x</ span >
237
+ < span class ="cline-any cline-yes "> 21x</ span >
238
+ < span class ="cline-any cline-yes "> 21x</ span >
239
+ < span class ="cline-any cline-yes "> 21x</ span >
240
+ < span class ="cline-any cline-yes "> 21x</ span >
241
+ < span class ="cline-any cline-yes "> 21x</ span >
242
+ < span class ="cline-any cline-yes "> 21x</ span >
243
+ < span class ="cline-any cline-yes "> 21x</ span >
244
+ < span class ="cline-any cline-yes "> 21x</ span >
245
+ < span class ="cline-any cline-yes "> 21x</ span >
246
+ < span class ="cline-any cline-yes "> 21x</ span >
247
+ < span class ="cline-any cline-yes "> 21x</ span >
248
+ < span class ="cline-any cline-yes "> 1x</ span >
249
+ < span class ="cline-any cline-yes "> 1x</ span >
250
+ < span class ="cline-any cline-yes "> 20x</ span >
251
+ < span class ="cline-any cline-yes "> 20x</ span >
252
+ < span class ="cline-any cline-yes "> 21x</ span >
253
+ < span class ="cline-any cline-yes "> 8x</ span >
254
+ < span class ="cline-any cline-yes "> 8x</ span >
255
+ < span class ="cline-any cline-yes "> 12x</ span >
256
+ < span class ="cline-any cline-yes "> 12x</ span >
257
+ < span class ="cline-any cline-yes "> 12x</ span >
258
+ < span class ="cline-any cline-yes "> 12x</ span >
259
+ < span class ="cline-any cline-yes "> 12x</ span >
237
260
< span class ="cline-any cline-yes "> 12x</ span >
238
261
< span class ="cline-any cline-yes "> 12x</ span >
239
- < span class ="cline-any cline-yes "> 6x</ span >
240
- < span class ="cline-any cline-yes "> 6x</ span >
241
- < span class ="cline-any cline-yes "> 6x</ span >
242
- < span class ="cline-any cline-yes "> 6x</ span >
243
- < span class ="cline-any cline-yes "> 6x</ span >
244
- < span class ="cline-any cline-yes "> 6x</ span >
262
+ < span class ="cline-any cline-yes "> 12x</ span >
263
+ < span class ="cline-any cline-yes "> 12x</ span >
264
+ < span class ="cline-any cline-yes "> 12x</ span >
265
+ < span class ="cline-any cline-yes "> 12x</ span >
266
+ < span class ="cline-any cline-yes "> 21x</ span >
245
267
< span class ="cline-any cline-yes "> 1x</ span >
246
268
< span class ="cline-any cline-yes "> 1x</ span >
247
269
< span class ="cline-any cline-yes "> 1x</ span >
@@ -269,23 +291,25 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
269
291
270
292
// MODULES //
271
293
272
- var ndims = require( '@stdlib/ndarray/base/ndims' );
273
294
var normalizeIndex = require( '@stdlib/ndarray/base/normalize-index' );
274
295
var getShape = require( '@stdlib/ndarray/base/shape' );
275
296
var sliceFrom = require( '@stdlib/ndarray/base/slice-from' );
276
297
var sliceTo = require( '@stdlib/ndarray/base/slice-to' );
298
+ var nulls = require( '@stdlib/array/base/nulls' );
299
+ var format = require( '@stdlib/string/format' );
277
300
278
301
279
302
// MAIN //
280
303
281
304
/**
282
- * Returns an array containing a truncated view of an input ndarray and a complementary view of the last element(s) along a specified dimension.
305
+ * Returns an array containing a truncated view of an input ndarray and a view of the last element(s) along a specified dimension.
283
306
*
284
307
* @param {ndarray} x - input array
285
308
* @param {integer} dim - dimension along which to perform the operation
286
- * @param {boolean} strict - boolean indicating whether to enforce strict bounds checking
287
309
* @param {boolean} writable - boolean indicating whether returned arrays should be writable
288
- * @returns {Array} a list of ndarrays
310
+ * @throws {TypeError} first argument must be an ndarray having one or more dimensions
311
+ * @throws {RangeError} dimension index exceeds the number of dimensions
312
+ * @returns {Array<ndarray>} a list of ndarrays
289
313
*
290
314
* @example
291
315
* var ndarray = require( '@stdlib/ndarray/ctor' );
@@ -302,7 +326,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
302
326
* var arr = ndarray2array( x );
303
327
* // returns [ [ 1.0, 2.0 ], [ 3.0, 4.0 ], [ 5.0, 6.0 ] ]
304
328
*
305
- * var y = pop( x, 0, false, false );
329
+ * var y = pop( x, 0, false );
306
330
* // returns [ <ndarray>, <ndarray> ]
307
331
*
308
332
* arr = ndarray2array( y[ 0 ] );
@@ -311,27 +335,36 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
311
335
* arr = ndarray2array( y[ 1 ] );
312
336
* // returns [ [ 5.0, 6.0 ] ]
313
337
*/
314
- function pop( x, dim, strict, writable ) {
338
+ function pop( x, dim, writable ) {
315
339
var v0;
316
340
var v1;
317
341
var sh;
318
342
var N;
319
343
var s;
320
- var i;
321
344
322
345
// Retrieve array meta data:
323
346
sh = getShape( x );
324
- N = ndims( x ) ;
347
+ N = sh.length ;
325
348
326
- // Resolve view slice:
327
- s = [];
328
- for ( i = 0; i < N; i++ ) {
329
- s[ i ] = null;
349
+ // Check whether we were provided a zero-dimensional array...
350
+ if ( N === 0 ) {
351
+ throw new TypeError( format( 'invalid argument. First argument must be an ndarray having one or more dimensions. Number of dimensions: %d.', N ) );
330
352
}
331
- dim = normalizeIndex( dim, N -1 );
353
+ // Normalize the dimension index:
354
+ dim = normalizeIndex( dim, N-1 );
355
+ if ( dim === -1 ) {
356
+ throw new RangeError( format( 'invalid argument. Dimension index exceeds the number of dimensions. Number of dimensions: %d. Value: `%d`.', N, dim ) );
357
+ }
358
+ // Define a list of slice arguments:
359
+ s = nulls( N );
332
360
s[ dim ] = sh[ dim ] - 1;
333
- v1 = sliceFrom( x, s, strict, writable );
334
- v0 = sliceTo( x, s, strict, writable );
361
+
362
+ // Create a truncated view:
363
+ v0 = sliceTo( x, s, true, writable );
364
+
365
+ // Create a view of the last element(s):
366
+ v1 = sliceFrom( x, s, true, writable );
367
+
335
368
return [ v0, v1 ];
336
369
}
337
370
@@ -346,7 +379,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
346
379
< div class ='footer quiet pad2 space-top1 center small '>
347
380
Code coverage generated by
348
381
< a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
349
- at 2025-09-21T14:15:47.552Z
382
+ at 2025-09-22T08:02:32.356Z
350
383
</ div >
351
384
< script src ="../../../../prettify.js "> </ script >
352
385
< script >
0 commit comments