#排序 #解析 #格式 #toml-parser #解析器

toml-parse

用于解析、排序和格式化 toml 的模块集合

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 次下载

MIT/Apache

120KB
3K SLoC

P.O.T.

由 Muncher 驱动的 Toml 解析器

Build Status Released API docs Latest Version

关于

此 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.0MIT 许可证 下许可。
除非您明确说明,否则根据 Apache-2.0 许可证定义,您有意提交给本项目包含的任何贡献,将按上述方式双重许可,而无需任何额外的条款或条件。

依赖

~2.5MB
~43K SLoC