4个稳定版本
1.2.0 | 2023年1月5日 |
---|---|
1.1.0 |
|
1.0.2 | 2023年1月4日 |
#2656 在 解析器实现
51KB
1K SLoC
yscl-rs
YSCL的高效、最小化解析器。
示例
use yscl::prelude::*;
let map = parse_doc(r#"
kantu_version = "1.0.0"
name = "fibonacci"
license = [
"MIT"
"Apache-2.0"
]
dependencies = {
yscl = "1.0.0"
json = "1.0.0"
}
author = "xeklan (黒🐑)"
"#).unwrap();
let expected = Map {
entries: vec![
MapEntry {
key: Identifier::new("kantu_version".to_owned()).unwrap(),
value: Node::Atom(
Atom {
value: "1.0.0".to_owned(),
},
),
},
MapEntry {
key: Identifier::new("name".to_owned()).unwrap(),
value: Node::Atom(
Atom {
value: "fibonacci".to_owned(),
},
),
},
MapEntry {
key: Identifier::new("license".to_owned()).unwrap(),
value: Node::List(
List {
elements: vec![
Node::Atom(
Atom {
value: "MIT".to_owned(),
},
),
Node::Atom(
Atom {
value: "Apache-2.0".to_owned(),
},
),
],
},
),
},
MapEntry {
key: Identifier::new("dependencies".to_owned()).unwrap(),
value: Node::Map(
Map {
entries: vec![
MapEntry {
key: Identifier::new("yscl".to_owned()).unwrap(),
value: Node::Atom(
Atom {
value: "1.0.0".to_owned(),
},
),
},
MapEntry {
key: Identifier::new("json".to_owned()).unwrap(),
value: Node::Atom(
Atom {
value: "1.0.0".to_owned(),
},
),
},
],
},
),
},
MapEntry {
key: Identifier::new("author".to_owned()).unwrap(),
value: Node::Atom(
Atom {
value: "xeklan (黒🐑)".to_owned(),
},
),
},
],
};
assert_eq!(expected, map);
文档
https://docs.rs/yscl/latest/yscl/
许可证
yscl-rs采用MIT许可证和Apache许可证(版本2.0)双重授权。