Confetti 是由我,Henry 创建的。

介绍 Confetti

Confetti 是一种 配置语言,它融合了 Unix 配置文件可读性和 S-expressions 的灵活性。它极简、无类型且具有倾向性。Schema 一致性由用户应用程序验证。 Confetti 并不与 JSON 或 XML 竞争,而是与 INI 竞争。

Kitchen Sink 示例#

以下示例使用了 Confetti 的大部分特性:

# 这是一个注释。
probe-device eth0 eth1
user * {
  login anonymous
  password "${ENV:ANONPASS}"
  machine 167.89.14.1
  proxy {
    try-ports 582 583 584
  }
}
user "Joe Williams" {
  login joe
  machine 167.89.14.1
}

实现#

Confetti 的标准实现是用 C11 编写的,可在 GitHub 上找到。 如果您想创建自己的 Confetti 实现,请查看 specification 并使用 官方一致性测试套件 测试您的实现。

理念#

简单和极简是 Confetti 的核心。一些格式,如 YAML,_非常_复杂(看看 它的规范 的大小!)而 Confetti 的规范简单而极简,并且可以在 几分钟内学会

Confetti 在设计上是_无类型的_,其语法是可组合的。Confetti 提供了创建一切所需的原子,从简单的配置到文本文件格式,再到轻量级脚本。查看 各种示例 以获取灵感。

值得注意的特点:

特性比较#

以下是 Confetti 与流行格式的比较:

Confetti | INI | JSON | TOML
---|---|---|---
Specification
Typeless
Localization Friendly | 1 | 2 | 2
Unicode Literals | 1
Multiline Literals
Comments
Hierarchical Structures
Intended Use Case | Configuration | Configuration | Data Interchange | Configuration
1 INI 没有 specification,因此对 internalization 和 Unicode 的支持取决于实现。 2 JSON 和 TOML 强制使用英语单词 truefalse 以及西方数字 09