balena-temen 0.0.14

Templating engine for (not just) JSON

balena temen

Build Status Current Release License Issues

A templating engine for JSON.

Provides facilities to:

  • evaluate JSON
  • evaluate JSON with custom evaluation keyword, functions and filters
  • evaluate single expression (result is of any type)
  • evaluate single logical expression (result is a boolean)
  • retrieve AST of any expression / identifier
an open source :satellite: project by balena.io

Goal

balena-temen crate is one small piece of the balena.io configuration project. This project has no public / open specification yet, but we're working on it and it will be public once finished.

Supported platforms

Anyone should be able to use this crate:

  • as a Rust crate
  • as an NPM package (Node.js)
  • in the browser (Web Assembly)

NPM package / browser (Web Assembly) parts are not done yet and are under the construction.

Documentation

Usage

Add as a dependency to your Cargo.toml:

[dependencies]
balena-temen = "0.1"

Evaluate simple JSON:

use balena_temen::eval;
use serde_json::json;

let data = json!({
    "wifi": {
        "ssid": "Balena Ltd",
        "id": {
            "$$eval": "super.ssid | slugify"
        }
    }
});
let evaluated = json!({
    "wifi": {
        "ssid": "Balena Ltd",
        "id": "balena-ltd"
    }
});

assert_eq!(eval(data).unwrap(), evaluated);

Support

If you're having any problem, please raise an issue on GitHub or contact us, and the balena.io team will be happy to help.

License

balena-temen is free software, and may be redistributed under the terms specified in the license.