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' );

function decrement( i )
{
  try
  {
    if( i <= 0 )
    throw _.error.err( 'negative!' );
    return i-1;
  }
  catch( err )
  {
    let error = _.error.err( err, '\nFailed to decrement' );
    if( _.error.once( error ) )
    console.log( error );
    throw error;
  }
}

function divide( i )
{
  try
  {
    if( i % 2 === 1 )
    throw _.error.err( 'odd!' );
    return decrement( i / 2 );
  }
  catch( err )
  {
    let error = _.error.err( err );
    if( _.error.once( error ) )
    console.log( error );
    throw error;
  }
}

try
{
  divide( 0 );
}
catch( err )
{
  let error = _.error.err( err );
  if( _.error.once( error ) )
  console.log( error );
}

/*
  Error logged once.
  States of an error make possible to account it and avoid logging second time.
*/