1个不稳定版本
0.1.0 | 2022年3月28日 |
---|
#2233 在 数据库接口
54KB
1K SLoC
kdl-schema
KDL Schema 类型和解析。
示例
构建一个模式
use kdl_schema::*;
let schema = Schema {
document: Document {
info: Info {
title: vec![TextValue {
text: "Sample Schema".to_string(),
lang: Some("en".to_string()),
}],
..Info::default()
},
nodes: vec![Node {
name: Some("name".to_string()),
values: vec![Value {
validations: vec![Validation::Type("string".to_string())],
..Value::default()
}],
..Node::default()
}]
}
};
println!("{:?}", schema);
解析一个模式KDL
#[cfg(feature = "parse-knuffel")] {
let schema_kdl = r#"
document {
info {
title "Sample Schema" lang="en"
description "An example schema" lang="en"
author "boringcactus"
}
node "name" {
value {
type "string"
}
}
node "age" {
value {
type "number"
}
}
}
"#;
let _matching_document = r#"
name "Joe"
age 69
"#;
let schema = kdl_schema::Schema::parse(schema_kdl).unwrap();
assert_eq!(schema.document.info.title[0].text, "Sample Schema");
}
引用模式模式
assert_eq!(kdl_schema::SCHEMA_SCHEMA.document.info.title[0].text, "KDL Schema");
cargo功能
parse-knuffel
-公开Schema::parse
,由knuffel
crate 提供
阻止版本1.0.0的条件
- 一致的良好的文档
- 如果引用源有其他内容,则将引用目标合并到引用源上
- 良好的API从文件中进行解析
- 类型实际上与模式匹配(目前我正在省略一些内容,因为模式模式没有使用它们)
- 易于使用的构建器API,以非丑陋的方式在Rust中定义模式
- 可以从Rust中的模式对象生成KDL
- 可以选择kdl或knuffel作为解析器
- 确保
required false
在prop
中正常工作 - 在解析时验证模式(确保例如引用可解析,ID是唯一的)
- 确保枚举与整数值一起工作
- 允许语言标签、修改日期等丰富类型
许可
依赖关系
~6–350KB