@@ -25,14 +25,14 @@ <h1><a href="index.html">All files</a> assign.js</h1>
2525 < div class ='fl pad1y space-right2 '>
2626 < span class ="strong "> 100% </ span >
2727 < span class ="quiet "> Statements</ span >
28- < span class ='fraction '> 141/141 </ span >
28+ < span class ='fraction '> 143/143 </ span >
2929 </ div >
3030
3131
3232 < div class ='fl pad1y space-right2 '>
3333 < span class ="strong "> 100% </ span >
3434 < span class ="quiet "> Branches</ span >
35- < span class ='fraction '> 17/17 </ span >
35+ < span class ='fraction '> 16/16 </ span >
3636 </ div >
3737
3838
@@ -46,7 +46,7 @@ <h1><a href="index.html">All files</a> assign.js</h1>
4646 < div class ='fl pad1y space-right2 '>
4747 < span class ="strong "> 100% </ span >
4848 < span class ="quiet "> Lines</ span >
49- < span class ='fraction '> 141/141 </ span >
49+ < span class ='fraction '> 143/143 </ span >
5050 </ div >
5151
5252
@@ -204,7 +204,9 @@ <h1><a href="index.html">All files</a> assign.js</h1>
204204< a name ='L139 '> </ a > < a href ='#L139 '> 139</ a >
205205< a name ='L140 '> </ a > < a href ='#L140 '> 140</ a >
206206< a name ='L141 '> </ a > < a href ='#L141 '> 141</ a >
207- < a name ='L142 '> </ a > < a href ='#L142 '> 142</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 2x</ span >
207+ < a name ='L142 '> </ a > < a href ='#L142 '> 142</ a >
208+ < a name ='L143 '> </ a > < a href ='#L143 '> 143</ a >
209+ < a name ='L144 '> </ a > < a href ='#L144 '> 144</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 2x</ span >
208210< span class ="cline-any cline-yes "> 2x</ span >
209211< span class ="cline-any cline-yes "> 2x</ span >
210212< span class ="cline-any cline-yes "> 2x</ span >
@@ -281,30 +283,31 @@ <h1><a href="index.html">All files</a> assign.js</h1>
281283< span class ="cline-any cline-yes "> 2x</ span >
282284< span class ="cline-any cline-yes "> 2x</ span >
283285< span class ="cline-any cline-yes "> 2x</ span >
284- < span class ="cline-any cline-yes "> 2x </ span >
285- < span class ="cline-any cline-yes "> 2x </ span >
286- < span class ="cline-any cline-yes "> 75x </ span >
287- < span class ="cline-any cline-yes "> 75x </ span >
288- < span class ="cline-any cline-yes "> 75x </ span >
289- < span class ="cline-any cline-yes "> 75x </ span >
290- < span class ="cline-any cline-yes "> 75x </ span >
291- < span class ="cline-any cline-yes "> 75x </ span >
292- < span class ="cline-any cline-yes "> 75x </ span >
293- < span class ="cline-any cline-yes "> 75x </ span >
294- < span class ="cline-any cline-yes "> 75x </ span >
286+ < span class ="cline-any cline-yes "> 84x </ span >
287+ < span class ="cline-any cline-yes "> 84x </ span >
288+ < span class ="cline-any cline-yes "> 84x </ span >
289+ < span class ="cline-any cline-yes "> 84x </ span >
290+ < span class ="cline-any cline-yes "> 84x </ span >
291+ < span class ="cline-any cline-yes "> 84x </ span >
292+ < span class ="cline-any cline-yes "> 84x </ span >
293+ < span class ="cline-any cline-yes "> 84x </ span >
294+ < span class ="cline-any cline-yes "> 84x </ span >
295+ < span class ="cline-any cline-yes "> 84x </ span >
296+ < span class ="cline-any cline-yes "> 84x </ span >
295297< span class ="cline-any cline-yes "> 20x</ span >
296298< span class ="cline-any cline-yes "> 20x</ span >
297- < span class ="cline-any cline-yes "> 75x </ span >
299+ < span class ="cline-any cline-yes "> 84x </ span >
298300< span class ="cline-any cline-yes "> 20x</ span >
299301< span class ="cline-any cline-yes "> 20x</ span >
300- < span class ="cline-any cline-yes "> 75x </ span >
301- < span class ="cline-any cline-yes "> 26x </ span >
302- < span class ="cline-any cline-yes "> 13x </ span >
303- < span class ="cline-any cline-yes "> 13x </ span >
304- < span class ="cline-any cline-yes "> 75x </ span >
305- < span class ="cline-any cline-yes "> 9x </ span >
306- < span class ="cline-any cline-yes "> 9x </ span >
302+ < span class ="cline-any cline-yes "> 44x </ span >
303+ < span class ="cline-any cline-yes "> 44x </ span >
304+ < span class ="cline-any cline-yes "> 44x </ span >
305+ < span class ="cline-any cline-yes "> 84x </ span >
306+ < span class ="cline-any cline-yes "> 35x </ span >
307+ < span class ="cline-any cline-yes "> 35x </ span >
308+ < span class ="cline-any cline-yes "> 22x </ span >
307309< span class ="cline-any cline-yes "> 22x</ span >
310+ < span class ="cline-any cline-yes "> 35x</ span >
308311< span class ="cline-any cline-yes "> 22x</ span >
309312< span class ="cline-any cline-yes "> 22x</ span >
310313< span class ="cline-any cline-yes "> 22x</ span >
@@ -315,11 +318,12 @@ <h1><a href="index.html">All files</a> assign.js</h1>
315318< span class ="cline-any cline-yes "> 22x</ span >
316319< span class ="cline-any cline-yes "> 22x</ span >
317320< span class ="cline-any cline-yes "> 22x</ span >
318- < span class ="cline-any cline-yes "> 75x</ span >
321+ < span class ="cline-any cline-yes "> 22x</ span >
322+ < span class ="cline-any cline-yes "> 84x</ span >
319323< span class ="cline-any cline-yes "> 2x</ span >
320324< span class ="cline-any cline-yes "> 2x</ span >
321325< span class ="cline-any cline-yes "> 12x</ span >
322- < span class ="cline-any cline-yes "> 75x </ span >
326+ < span class ="cline-any cline-yes "> 84x </ span >
323327< span class ="cline-any cline-yes "> 2x</ span >
324328< span class ="cline-any cline-yes "> 2x</ span >
325329< span class ="cline-any cline-yes "> 10x</ span >
@@ -332,14 +336,14 @@ <h1><a href="index.html">All files</a> assign.js</h1>
332336< span class ="cline-any cline-yes "> 10x</ span >
333337< span class ="cline-any cline-yes "> 10x</ span >
334338< span class ="cline-any cline-yes "> 10x</ span >
335- < span class ="cline-any cline-yes "> 75x </ span >
339+ < span class ="cline-any cline-yes "> 84x </ span >
336340< span class ="cline-any cline-yes "> 2x</ span >
337341< span class ="cline-any cline-yes "> 2x</ span >
338342< span class ="cline-any cline-yes "> 8x</ span >
339343< span class ="cline-any cline-yes "> 8x</ span >
340344< span class ="cline-any cline-yes "> 8x</ span >
341345< span class ="cline-any cline-yes "> 8x</ span >
342- < span class ="cline-any cline-yes "> 75x </ span >
346+ < span class ="cline-any cline-yes "> 84x </ span >
343347< span class ="cline-any cline-yes "> 2x</ span >
344348< span class ="cline-any cline-yes "> 2x</ span >
345349< span class ="cline-any cline-yes "> 2x</ span >
@@ -369,7 +373,6 @@ <h1><a href="index.html">All files</a> assign.js</h1>
369373
370374var hasEqualValuesIndexed = require( '@stdlib/array/base/assert/has-equal-values-indexed' );
371375var isMostlySafeCast = require( '@stdlib/ndarray/base/assert/is-mostly-safe-data-type-cast' );
372- var isNegativeInteger = require( '@stdlib/assert/is-negative-integer' ).isPrimitive;
373376var isArrayLikeObject = require( '@stdlib/assert/is-array-like-object' );
374377var isndarrayLike = require( '@stdlib/assert/is-ndarray-like' );
375378var promoteDataTypes = require( '@stdlib/ndarray/base/promote-dtypes' );
@@ -384,6 +387,7 @@ <h1><a href="index.html">All files</a> assign.js</h1>
384387var broadcastArrays = require( './broadcast_arrays.js' );
385388var resolveDataTypes = require( './resolve_dtypes.js' );
386389var resolveShape = require( './resolve_shape.js' );
390+ var validate = require( './validate.js' );
387391var base = require( './base.js' );
388392
389393
@@ -394,16 +398,17 @@ <h1><a href="index.html">All files</a> assign.js</h1>
394398*
395399* @param {ArrayLikeObject<ndarrayLike>} arrays - array-like object containing input ndarrays
396400* @param {ndarrayLike} out - output ndarray
397- * @param {NegativeInteger} [dim] - dimension along which to concatenate input ndarrays
401+ * @param {Options} [options] - function options
402+ * @param {integer} [options.dim=-1] - dimension along which to concatenate the input ndarrays
398403* @throws {TypeError} first argument must be an array of ndarray-like objects
399404* @throws {RangeError} first argument must contain one or more ndarrays
400405* @throws {TypeError} second argument must be an ndarray-like object
401- * @throws {TypeError} third argument must be a negative integer
406+ * @throws {TypeError} options argument must be an object
407+ * @throws {TypeError} must provide valid options
402408* @throws {Error} must provide ndarrays which can be safely cast to a common data type
403409* @returns {ndarrayLike} output ndarray
404410*
405411* @example
406- * var ndarray2array = require( '@stdlib/ndarray/to-array' );
407412* var Float64Array = require( '@stdlib/array/float64' );
408413* var ndarray = require( '@stdlib/ndarray/ctor' );
409414*
@@ -415,18 +420,17 @@ <h1><a href="index.html">All files</a> assign.js</h1>
415420*
416421* var z = new ndarray( 'float64', new Float64Array( 10 ), [ 2, 5 ], [ 5, 1 ], 0, 'row-major' );
417422*
418- * var out = assign( [ x, y ], z, -1 );
419- * // returns <ndarray>
423+ * var out = assign( [ x, y ], z );
424+ * // returns <ndarray>[ [ -1.0, 2.0, -5.0, 6.0, -7.0 ], [ -3.0, 4.0, 8.0, -9.0, 10.0 ] ]
420425*
421426* var bool = ( out === z );
422427* // returns true
423- *
424- * var arr = ndarray2array( z );
425- * // returns [ [ -1.0, 2.0, -5.0, 6.0, -7.0 ], [ -3.0, 4.0, 8.0, -9.0, 10.0 ] ]
426428*/
427- function assign( arrays, out, dim ) {
429+ function assign( arrays, out ) {
430+ var opts;
428431 var arrs;
429432 var view;
433+ var err;
430434 var osh;
431435 var sh;
432436 var dt;
@@ -438,12 +442,14 @@ <h1><a href="index.html">All files</a> assign.js</h1>
438442 if ( !isndarrayLike( out ) ) {
439443 throw new TypeError( format( 'invalid argument. Second argument must be an ndarray. Value: `%s`.', out ) );
440444 }
445+ opts = {
446+ 'dim': -1
447+ };
441448 if ( arguments.length > 2 ) {
442- if ( !isNegativeInteger( dim ) ) {
443- throw new TypeError( format( 'invalid argument. Third argument must be a negative integer. Value: `%s`.', dim ) );
449+ err = validate( opts, arguments[ 2 ] );
450+ if ( err ) {
451+ throw err;
444452 }
445- } else {
446- dim = -1;
447453 }
448454 // Normalize the list of input ndarrays:
449455 arrs = normalizeArrays( arrays );
@@ -452,7 +458,7 @@ <h1><a href="index.html">All files</a> assign.js</h1>
452458 view = ndarraylike2ndarray( out );
453459
454460 // Broadcast the input ndarrays to a common shape:
455- arrs = broadcastArrays( arrs, dim );
461+ arrs = broadcastArrays( arrs, opts. dim );
456462
457463 // Apply type promotion rules to the data types of the input ndarrays:
458464 dt = promoteDataTypes( resolveDataTypes( arrs ) );
@@ -464,7 +470,7 @@ <h1><a href="index.html">All files</a> assign.js</h1>
464470 throw new Error( format( 'invalid argument. The list of input ndarrays cannot be safely cast to the data of the output ndarray. Input data types: [%s]. Output data type: %s.', join( resolveDataTypes( arrs ), ', ' ), getDType( view ) ) );
465471 }
466472 // Normalize the dimension index:
467- d = normalizeIndex( dim, ndims( arrs[ 0 ] )-1 );
473+ d = normalizeIndex( opts. dim, ndims( arrs[ 0 ] )-1 );
468474
469475 // Resolve the expected shape of the output ndarray:
470476 sh = resolveShape( arrs, d );
@@ -493,7 +499,7 @@ <h1><a href="index.html">All files</a> assign.js</h1>
493499 < div class ='footer quiet pad2 space-top1 center small '>
494500 Code coverage generated by
495501 < a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
496- at 2025-11-03T08:44:59.551Z
502+ at 2026-01-02T07:07:39.510Z
497503 </ div >
498504 < script src ="prettify.js "> </ script >
499505 < script >
0 commit comments