3 个版本 (破坏性更新)
0.3.0 | 2021年5月14日 |
---|---|
0.2.0 | 2020年10月22日 |
0.1.0 | 2020年10月21日 |
#2083 在 解析器实现
每月24次下载
20KB
449 行
scfg-rs
一个用于解析 scfg 文件的 Rust 库。Scfg 是一种简单的基于行的配置文件格式。每行最多可以包含一个指令。指令由一个名称组成,后跟可选的参数,参数之间由空格分隔,后跟可选的子块,子块由 {
和 }
分隔。行首的空白字符是无关紧要的。以 #
开头的行是注释,将被忽略。
示例
use scfg::Scfg;
// an scfg document
static SCFG_DOC: &str = r#"train "Shinkansen" {
model "E5" {
max-speed 320km/h
weight 453.5t
lines-served "Tōhoku" "Hokkaido"
}
model "E7" {
max-speed 275km/h
weight 540t
lines-served "Hokuriku" "Jōetsu"
}
}"#;
let doc = SCFG_DOC.parse::<Scfg>().expect("invalid document");
// the above document can also be created with this builder style api
let mut scfg = Scfg::new();
let train = scfg
.add("train")
.append_param("Shinkansen")
.get_or_create_child();
let e5 = train.add("model").append_param("E5").get_or_create_child();
e5.add("max-speed").append_param("320km/h");
e5.add("weight").append_param("453.5t");
e5.add("lines-served")
.append_param("Tōhoku")
.append_param("Hokkaido");
let e7 = train.add("model").append_param("E7").get_or_create_child();
e7.add("max-speed").append_param("275km/h");
e7.add("weight").append_param("540t");
e7.add("lines-served")
.append_param("Hokuriku")
.append_param("Jōetsu");
assert_eq!(doc, scfg);
贡献
请将补丁发送到 邮件列表
许可证
MIT 或 Apache-2.0
依赖
~200KB