#graph #object #query-language #xpath #extracting #jq #config

datafu

A Rust library for extracting data from config objects and other arbitrary object graphs

9 个版本

0.1.0-alpha.22023年4月9日
0.0.7 2021年3月4日
0.0.6 2021年2月27日
0.0.2 2021年1月24日

#2024 in 解析器实现

每月42次下载

MIT/Apache and AGPL-3.0-or-later

195KB
3.5K SLoC

Datafu

Datafu 是一个用于从配置对象和其他任意对象图中提取数据的 Rust 库,使用自定义查询语言。作为一个查询语言,它继承了 XPath 和 jq 的某些特性,但在范围上有显著的不同。作为一个库,它试图保持事情相对简单。

与 XPath 的比较

XPath 大概是一个标准。虽然它主要是为 XML 设计的,但也有 XPath 实现可以与 JSON 和其他格式一起工作。它也几乎是类型感知的,并且可以在不使用用户回调的情况下执行操作,如数值范围检查。

与 XPath 不同,Datafu 并不是主要用于 XML,而是一个更通用的工具,也可以用于 XML。它甚至支持循环图,例如在 Lua 表中找到的循环图。

与 jq 的比较

jq 首先是 CLI 工具。它也是图灵完备的。如果你不感兴趣于不可判定的模式,并且前面的 README 部分没有说服你使用 XPath,那么 Datafu 应该是你的选择。

与 Serde 的比较

截至 Datafu 0.1.0,Datafu 由 Serde 驱动。这使得我们可以依赖 Serde 进行反序列化,同时利用 Datafu 的效率。请注意,然而,Datafu 是有状态的。

依赖关系

~4.5–6MB
~114K SLoC