time-to-botec/squiggle/node_modules/@stdlib/utils/eval/README.md
NunoSempere b6addc7f05 feat: add the node modules
Necessary in order to clearly see the squiggle hotwiring.
2022-12-03 12:44:49 +00:00

2.8 KiB

eval

Alias for eval global.

Usage

var evil = require( '@stdlib/utils/eval' );

evil( str )

Alias for eval global.

var v = evil( '5*4*3*2*1' );
// returns 120

Notes

  • A reference to eval is treated differently by the compiler. For example, when evaluating code containing block-scoped declarations (e.g., let, const, function, class), the compiler may throw an error complaining that block-scoped declarations are not yet supported outside of strict mode. One possible workaround is to include "use strict"; in the evaluated code, as done in the example below.

Examples

var evil = require( '@stdlib/utils/eval' );

var ctors;
var fcn;
var i;

function compile( ctor ) {
    var name;
    var str;

    name = ctor.match( /^(\w*)Array$/ )[ 1 ];
    name += 'DataArray';

    str = '';
    str += '(function create(){';
    str += '"use strict";';
    str += 'class '+name+' extends '+ctor+'{';
    str += 'constructor(x){';
    str += 'super(x);';
    str += '}';
    str += '}';
    str += 'return '+name+';';
    str += '})();';
    return str;
}

ctors = [
    'Int8Array',
    'Uint8Array',
    'Uint8ClampedArray',
    'Int16Array',
    'Uint16Array',
    'Int32Array',
    'Uint32Array',
    'Float32Array',
    'Float64Array',
    'Array'
];

for ( i = 0; i < ctors.length; i++ ) {
    fcn = evil( compile( ctors[i] ) );
    console.log( fcn.toString() );
}

CLI

Usage

Usage: js-eval [options] <code>

Options:

  -h,    --help                Print this message.
  -V,    --version             Print the package version.

Examples

$ js-eval '5*4*3*2*1'
120