Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    data-expressionpublic

    Data Expressions for JavaScript

    data-expression makes working with statically evaluable JavaScript expressions safely (specifically, not using eval())... fun, maybe? This could come in handy if you're making something that allows users to filter, map or manipulate data. Here are some examples:

    The data-expression module's evaluate() function takes an expression and an optional object of variable values:

    > var datex = require('data-expression');
    > datex('foo + 1', {foo: 2});
    3

    The setter() function takes an assignment statement and evaluates it in the context of the provided object, then returns the modified object:

    > var setter = datex('foo = foo * 2');
    > setter({foo: 10});
    {foo: 20}

    Leaving off the second argument returns a function that can be re-evaluated with different data values. In this example, you can see that we're using ES6 arrow functions as a shorthand for function(x) { return x * 10 }:

    > var expr = datex('foo.split(",").map(x => x * 10)');
    > expr({foo: '3,2,1'});
    [30, 20, 10]

    These evaluation context functions can have variables set programmatically, and you can even require() modules for use in the expression:

    > var context = datex('foo = humanize(foo)')
        .require('humanize-string', 'humanize');
    > context({foo: 'fooBar'});
    {foo: 'Foo bar'}

    The CLI tool

    Think of this as an enabler of one-line data transforms.

    Reformat dates in a dat repository:

    $ dat cat | datex --require 'moment' - \
      "date = moment(date).format('YYYY-MM-DD')" | dat

    Keywords

    none

    install

    npm i data-expression

    Downloadsweekly downloads

    2,064

    version

    0.3.2

    license

    CC0

    repository

    githubgithub

    last publish

    collaborators

    • avatar