Need private packages and team management tools?Check out npm Teams »

jsexpr

0.7.5 • Public • Published

jsexpr

JSON Expressions!

Build Status

String and JSON expression interpolator and evaluator. Interpolates or evaluates a string against a json object, or transforms an object into another based on a json template.

Installation

npm install jsexpr

String Evaluation

const expression = require("jsexpr");
 
var fn = expression.fn("(${host}=='mymachine' || ${host}=='yourmachine') && ${appName}=='su'");
 
// Result: false
var result = fn({host:"mymachine",appName:23});

String Interpolation

const expression = require("jsexpr");
 
var expr = expression.expr("/var/${date}/${client.address}/file.log");
 
// Result: /var/2017-01-01/localhost/file.log
var result = expr({date:"2017-01-01",client:{address:"localhost"}});

Object Interpolation

const expression = require("jsexpr");
 
var jsexpr = expression.expr({
    time : "${client}/${address.host}:${address.port}",
    data : {
        request : {
            headers : "${headers}"
        }
    }
});
 
var result = jsexpr({
    client : "HOST001",
    address : {
        host : "localhost",
        port : 8080
    },
    headers : "Content-Type: application/json"
});

Object Interpolation Result

{
    time: 'HOST001/localhost:8080',
    data: {
        request: {
            headers: 'Content-Type: application/json'
        }
    }
}

JSON Stringify

var input1 = {client : "HOST001", address : {host : "localhost", port : 8080}, headers : "Content-Type: application/json"};
 
let jxpr1 = expr.expr("${JSON}");
let jxpr2 = expr.expr("${JSON:address}");
let jxpr3 = expr.expr("${JSON:address:0}");
let jxpr4 = expr.expr("${JSON:0}");
 
// =>
 
{
  "client": "HOST001",
  "address": {
    "host": "localhost",
    "port": 8080
  },
  "headers": "Content-Type: application/json"
}
 
{
  "host": "localhost",
  "port": 8080
}
 
{"host":"localhost","port":8080}
 
{"client":"HOST001","address":{"host":"localhost","port":8080},"headers":"Content-Type: application/json"}

Install

npm i jsexpr

DownloadsWeekly Downloads

31

Version

0.7.5

License

MIT

Unpacked Size

77.2 kB

Total Files

28

Last publish

Collaborators

  • avatar