25 个不稳定版本

1.0.0-alpha.6 2020年6月28日
1.0.0-alpha.4 2020年5月26日
0.13.2 2024年7月31日
0.13.0 2024年2月1日
0.4.0 2020年11月18日

#182 in 解析器实现

Download history 11323/week @ 2024-05-02 13180/week @ 2024-05-09 13267/week @ 2024-05-16 12787/week @ 2024-05-23 12171/week @ 2024-05-30 10212/week @ 2024-06-06 11953/week @ 2024-06-13 8871/week @ 2024-06-20 7181/week @ 2024-06-27 8246/week @ 2024-07-04 7279/week @ 2024-07-11 7028/week @ 2024-07-18 8902/week @ 2024-07-25 7755/week @ 2024-08-01 6568/week @ 2024-08-08 6730/week @ 2024-08-15

31,150 个月下载量
用于 12crates (11 直接使用)

MIT 许可证

235KB
7K SLoC

关于

该库的主要目的是提供分析 TOML 数据的工具,其中必须保留布局并且必须知道每个解析标记的原始位置。它还可以格式化 TOML 文档。

它使用 Rowan 构建语法树,并保留所有输入中的每个字符,包括所有注释和空白。

可以构建一个 DOM,用于数据导向的分析,其中每个节点包装了语法树的一部分,并附加了额外的信息和功能。

特性

  • 时间:使用 time 为 TOML 日期和时间

  • serde:支持对 DOM 节点的 serde 序列化。

  • 模式:启用格式化器配置的 JSON-schema 生成。

用法

必须首先使用 parse 解析 TOML 文档,它将构建一个可以遍历的语法树。

如果没有在解析过程中出现语法错误,则可以构建一个 dom::Node。它将构建一个 DOM 树并验证 TOML 文档是否符合规范。即使在存在语法错误的情况下,也可以构建 DOM 树,但其中可能缺少部分内容。

use taplo::parser::parse;
const SOURCE: &str =
"value = 1
value = 2

[table]
string = 'some string'";

let parse_result = parse(SOURCE);

// Check for syntax errors.
// These are not carried over to DOM errors.
assert!(parse_result.errors.is_empty());

let root_node = parse_result.into_dom();

// Check for semantic errors.
// In this example "value" is a duplicate key.
assert!(root_node.validate().is_err());

依赖项

~10MB
~158K SLoC