Skip to content

Repository files navigation

BON (Better Object Notation)

JSON 的超集,配置界的编译器。

BON 是一门编译期执行的、声明式的数据转换语言。写的时候像代码,用的时候是数据。

# 模板复用
cpu-{"cpu": "250m", "memory": "256Mi"}

# 类与继承
class WebService {
    "replicas": 1,
    "resources": {cpu}
}

# 标准库转换
std.map([1, 2, 3], fn(x) { return x * 2 })
// 输出永远是纯 JSON
{ "service": { "name": "api", "replicas": 1, "resources": {"cpu":"250m","memory":"256Mi"} } }

核心特性

  • 完全兼容 JSON — 所有合法 JSON 都是合法 BON
  • 编译期求值 — 所有逻辑在解析时完成,输出纯 JSON,零运行时
  • 确定性 — 图灵不完备,相同源码输出一致
  • 模板系统 — 消除重复配置
  • 类与继承 — 可复用的数据结构
  • 标准库 — 字符串、数组、对象操作
  • 导入系统 — 多文件拆分

项目结构

BON/
├── packages/
│   ├── bon-py/          # Python 实现(解析器 + 求值器 + CLI)
│   ├── bon-ts/          # TypeScript 实现(解析器 + 求值器 + CLI)
│   └── bon-vsc-ext/     # VS Code 扩展(语法高亮 + 图标)
├── tests/               # 共享测试
└── use/                 # 使用示例
    ├── bon-py/          # Python 示例
    └── bon-ts/          # TypeScript 示例

快速开始

安装

# Python
pip install -e packages/bon-py

# TypeScript
cd packages/bon-ts && npm install && npm run build

# VS Code 扩展
code --install-extension packages/bon-vsc-ext/bon-language-1.0.0.vsix

使用

# CLI
python -m bon_py.cli file.bon
node packages/bon-ts/dist/cli.js file.bon

# Python 库
from bon_py.evaluator import evaluate
result = evaluate('{ "name": "BON" }')

# TypeScript 库
import { evaluate } from "bon-ts";
const result = evaluate('{ "name": "BON" }');

文档

文档使用 Vitepress 构建,在 https://docss.sxxyrry.qzz.io/BON/

运行测试

# Python
cd packages/bon-py && python -m pytest

# TypeScript
cd packages/bon-ts && npm test

许可证 License

Apache v2.0

About

BON (Better Object Notation) 是 JSON 的超集,配置界的 SASS。它专门为外部项目提供强大的配置支持能力,让开发者能够轻松集成专业级的配置功能到自己的应用程序中。采用 Apache 2.0 协议 开源。

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages