non_std 0.1.4

Collection of general purpose tools for solving problems. Fundamentally extend the language without spoiling, so may be used solely or in conjunction with another module of such kind.
Documentation
let _ = require( 'wTools' );

// scalar routine
function sum( a )
{
  return a + 5;
}

// vectorized routine
var o =
{
  routine : sum,
  vectorizingMapKeys : 1,
  vectorizingMapVals : 1,
  select : 1,
}
let sumV = _.vectorize( o );

// log examples
console.log( sumV( [ 0, 1, 2, 'a' ] ) );
console.log( sumV( { a : 'a', b : 4, c : 5 } ) );


// scalar routine
function arr()
{
  return _.longSlice( arguments );
}

// vectorized routine
var o =
{
  routine : arr,
  vectorizingMapKeys : 1,
  vectorizingMapVals : 0,
  select : 2,
}
let changeKeys = _.vectorize( o );

// log examples
console.log( changeKeys( [ 0, 1, 2, 'a' ], [ 1, 2, 3, 4 ] ) );
console.log( changeKeys( [ 1, 2, 3 ], { a : 'a', b : 4 } ) );

// vectorized routine
var o =
{
  routine : arr,
  vectorizingArray : 1,
  vectorizingMapKeys : 0,
  vectorizingMapVals : 0,
  select : 2,
}
let arrV = _.vectorize( o );

// log examples
console.log( arrV( [ 0, 1, 2, 'a' ], [ 1, 2, 3, 4 ] ) );
console.log( arrV( { a : 5 }, [ 1, 2, 3 ] ) );
console.log( arrV( { a : 5 }, 1 ) );

// vectorized routine
var o =
{
  routine : arr,
  vectorizingArray : 1,
  select : 'a',
}
let selectByKey = _.vectorize( o );

// log examples
console.log( selectByKey( [ 0, 1, 2, 'a' ] ) );
console.log( selectByKey( { a : 2, b : [ 3, 4 ] } ) );
console.log( selectByKey( { a : [ 5, 4, 3 ], b : [ 1, 2 ], c : 0 } ) );

// vectorized routine
var o =
{
  routine : arr,
  vectorizingArray : 1,
  select : [ 'a', 'b' ],
}
let selectByKeys = _.vectorize( o );

// log examples
let result = selectByKeys( { a : [ 5, 4, 3 ], b : [ 'a', 2 ] } );
console.log( result );
for( let i = 0; i < result.length; i++ )
console.log( result[ i ] );