23 个版本 (5 个重大更改)

0.5.7 2019 年 6 月 11 日
0.5.6 2019 年 3 月 21 日
0.5.3 2019 年 2 月 8 日
0.0.25 2018 年 12 月 7 日
0.0.22 2018 年 11 月 27 日

#2134解析器实现

Download history 8/week @ 2024-03-15 8/week @ 2024-03-29 4/week @ 2024-04-05

每月 59 次下载
jellyschema 中使用

Apache-2.0

150KB
3K SLoC

Rust 2.5K SLoC // 0.0% comments JavaScript 244 SLoC Shell 109 SLoC // 0.5% comments Pest 83 SLoC // 0.2% comments

balena temen

Build Status Current Release License Issues

JSON的模板引擎。

提供以下功能

  • 评估JSON
  • 使用自定义评估关键字、函数和过滤器评估JSON
  • 评估单个表达式(结果为任何类型)
  • 评估单个逻辑表达式(结果为布尔值)
  • 检索任何表达式/标识符的AST
balena.io 开发的开源 📡 项目

目标

balena-temen 包是 balena.io 配置项目的一个小部分。该项目目前还没有公开/开放规范,但我们正在努力工作,完成后将公开。

支持的平台

此库是用 Rust 语言编写的,可以直接使用

  • 作为一个 Rust 包
  • 作为一个同构的 NPM 包(NodeJS & 浏览器)

文档

重大更改

版本 0.3

  • Python 风格的 kwargs 已被移除,以支持位置参数。所有函数和过滤器仅接受位置参数。
  • NOW() 函数仅接受一个 boolean 参数

版本 0.2

  • 所有函数和过滤器标识符都大写
    • 示例 uuidv4() -> UUIDV4()

版本 0.1

$$eval 关键字已更名为 $$formula。如果您愿意,仍然可以使用 $$eval 通过使用 EngineEngineBuilder自定义 eval 关键字 注册。

用法

Rust

在您的 Cargo.toml 中添加依赖项

[dependencies]
balena-temen = "0.1"

评估简单的 JSON

use balena_temen::evaluate;
use serde_json::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

通过 npm 安装

npm install --save balena-temen

评估简单的 JSON

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

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

examples/node 文件夹中可以找到使用此模块在 nodeJS 中的示例

cd examples/node
npm install
npm start

examples/browser 文件夹中可以找到使用此模块在浏览器中的示例

cd examples/browser
npm install
npm start

在您的浏览器中打开 localhost:8080,您应该在浏览器控制台中看到已评估的 JSON。

支持

如果您有任何问题,请通过 GitHub 提交问题联系我们,balena.io 团队将很高兴为您提供帮助。

许可证

balena-temen 是开源软件,可以在指定的 许可证 条件下重新分发。

依赖项

~4.5–6.5MB
~109K SLoC