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 在 解析器实现
每月 59 次下载
在 jellyschema 中使用
150KB
3K SLoC
balena temen
JSON的模板引擎。
提供以下功能
- 评估JSON
- 使用自定义评估关键字、函数和过滤器评估JSON
- 评估单个表达式(结果为任何类型)
- 评估单个逻辑表达式(结果为布尔值)
- 检索任何表达式/标识符的AST
由 balena.io 开发的开源 📡 项目
目标
balena-temen
包是 balena.io 配置项目的一个小部分。该项目目前还没有公开/开放规范,但我们正在努力工作,完成后将公开。
支持的平台
此库是用 Rust 语言编写的,可以直接使用
文档
重大更改
版本 0.3
- Python 风格的
kwargs
已被移除,以支持位置参数。所有函数和过滤器仅接受位置参数。 NOW()
函数仅接受一个boolean
参数
版本 0.2
- 所有函数和过滤器标识符都大写
- 示例
uuidv4()
->UUIDV4()
- 示例
版本 0.1
$$eval
关键字已更名为 $$formula
。如果您愿意,仍然可以使用 $$eval
通过使用 Engine 的 EngineBuilder 和 自定义 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