Norse Polytheistic Mythology

    This package has been deprecated

    Author message:

    Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

    tinymath

    1.2.1 • Public • Published

    Tinymath

    Apache License Build Status npm

    Tinymath is a tiny arithmetic and function evaluator for simple numbers and arrays. Named properties can be accessed from an optional scope parameter and new functions can be added without rebuilding. Enjoy.

    NOTE: Tinymath requires an ES6 or newer environment. You can use it with your build system of choice to run in older environments, or use the ES5 compatible version by importing tinymath/lib/tinymath.es5.js.

    See Function Documentation for details on built-in functions available in Tinymath.

    import { evaluate } from tinymath
     
    // Simple math
    evaluate('10 + 20'); // 30
    evaluate('round(3.141592)') // 3
     
    // Named properties
    evaluate('foo + 20', {foo: 5}); // 25
     
    // Arrays
    evaluate('bar + 20', {bar: [1, 2, 3]}); // [21, 22, 23]
    evaluate('bar + baz', {bar: [1, 2, 3], baz: [4, 5, 6]}); // [5, 7, 9]
    evaluate('multiply(bar, baz) / 10', {bar: [1, 2, 3], baz: [4, 5, 6]}); // [0.4, 1, 1.8]

    Adding Functions

    Functions can be injected, and built in function overwritten, via the 3rd argument to evaluate:

    import { evaluate } from tinymath
     
    evaluate('plustwo(foo)', {foo: 5}, {
        plustwo: function(a) {
            return a + 2;
        }
    }); // 7

    Parsing

    You can get to the parsed AST by importing parse

    import { parse } from tinymath
     
    parse('1 + random()')
    /*
    {
       "name": "add",
       "args": [
          1,
          {
             "name": "random",
             "args": []
          }
       ]
    }
    */

    Notes

    • Floating point operations have the normal Javascript limitations

    Keywords

    none

    Install

    npm i tinymath

    DownloadsWeekly Downloads

    2,993

    Version

    1.2.1

    License

    Apache-2.0

    Unpacked Size

    706 kB

    Total Files

    12

    Last publish

    Collaborators

    • cqliu1
    • rashidkpc
    • w33ble