balena temen

Build Status Current Release License Issues

A templating engine for JSON.

Provides facilities to:

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

This library is written in the Rust language and can be used:

Documentation

Breaking changes

Version 0.1

$$eval keyword was renamed to $$formula. You can still use $$eval if you want by instantiating your own Engine with the EngineBuilder and custom eval keyword registration.

Usage

Rust

Add as a dependency to your Cargo.toml:

toml [dependencies] balena-temen = "0.1"

Evaluate simple JSON:

```rust use balenatemen::evaluate; use serdejson::json;

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

assert_eq!(evaluate(data).unwrap(), evaluated); ```

Javascript

Install via npm

sh npm install --save balena-temen

Evaluate simple JSON:

```js const bt = require('balena-temen');

console.log( bt.evaluate({ "ssid": "Some Cool SSID!", "id": { "$$formula": "super.ssid | slugify" } }) ); ```

An example of using this module in nodeJS is available in the examples/node folder:

bash cd examples/node npm install npm start

An example of using this module in the browser is available in the examples/browser folder:

bash cd examples/browser npm install npm start

Open localhost:8080 in your browser and you should see evaluated JSON in the browser console.

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 open source software, and may be redistributed under the terms specified in the [license].