9 个版本
0.2.11 | 2020年9月8日 |
---|---|
0.2.10 | 2020年9月8日 |
0.2.7 | 2020年3月15日 |
0.1.5 | 2020年3月13日 |
1772 在 解析器实现
每月26 次下载
120KB
3K SLoC
P.O.T.
由 Muncher 驱动的 Toml 解析器
关于
此 toml 解析器最重要的特点是它保留了原始解析文件的格式(空白字符、注释等)。对于 toml 格式化工具如 cargo sort check,此功能是必不可少的,这也是为什么不幸地不能使用像 toml-rs 这样的工具的原因。
使用
[dependencies]
toml-parse = "0.2.7"
示例
解析
use toml_parse::{parse_it, SyntaxNodeExtTrait};
let file =
r#"[deps]
alpha = "beta"
number = 1234
array = [ true, false, true ]
inline-table = { date = 1988-02-03T10:32:10, }
"#;
let parsed = parse_it(file).expect("parse failed");
let root = parsed.syntax();
assert_eq!(root.token_text(), file)
解析树是一个 rowan
SyntaxNode
,它可以自由地进行操作和遍历。 SyntaxNodeExtTrait
允许轻松地将标记(源文件文本)转换为字符串表示。
排序
use toml_parse::{parse_it, SyntaxNodeExtTrait};
let file = r#"# comment
[dependencies]
number = 1234
# comment
alpha = "beta"
"#;
let parsed = parse_it(file).expect("parse failed").syntax();
let parsed2 = parse_it(file).expect("parse failed").syntax();
assert!(parsed.deep_eq(&parsed2));
let sorted = sort_toml_items(&parsed, &HEADER);
assert!(!parsed.deep_eq(&sorted));
排序后的树是一个 rowan
SyntaxNode
,它可以自由地进行操作和遍历。
格式化
use toml_parse::{parse_it, Formatter};
let parsed = parse_it(&input).expect("").syntax();
let fmted = Formatter::new(&parsed).format();
assert_ne!(fmted.to_string(), input);
结构化(即将推出)
许可证
根据您的选择,在 Apache 许可证,版本 2.0 或 MIT 许可证 下许可。除非您明确说明,否则根据 Apache-2.0 许可证定义,您有意提交给本项目包含的任何贡献,将按上述方式双重许可,而无需任何额外的条款或条件。
依赖
~2.5MB
~43K SLoC