13个版本 (5个重大变更)

0.6.0 2022年9月9日
0.5.0 2022年8月18日
0.4.0 2022年8月10日
0.3.0 2022年8月9日
0.1.10 2020年10月30日

#2693 in 解析器实现

Download history 19/week @ 2024-03-13 21/week @ 2024-03-20 28/week @ 2024-03-27 43/week @ 2024-04-03 17/week @ 2024-04-10 15/week @ 2024-04-17 22/week @ 2024-04-24 21/week @ 2024-05-01 21/week @ 2024-05-08 18/week @ 2024-05-15 22/week @ 2024-05-22 16/week @ 2024-05-29 16/week @ 2024-06-05 21/week @ 2024-06-12 21/week @ 2024-06-19 16/week @ 2024-06-26

每月75次下载
用于 8 个crate(7个直接使用)

MIT/Apache

155KB
4.5K SLoC

JSONA CLI

A JSONA解析器、分析器和格式化库。更多信息请访问网站


lib.rs:

关于

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

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

可以构建一个DOM,用于面向数据的分析,其中每个节点都封装了一部分语法树以及额外的信息和功能。

特性

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

用法

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

如果解析过程中没有语法错误,则可以构建一个dom::Node。它将构建一个DOM树并根据规范验证JSONA文档。即使在存在语法错误的情况下,也可以构建DOM树,但其中某些部分可能缺失。

use jsona::parser::parse;
const SOURCE: &str = r#"
{
  createPost: { @describe("Create a blog post") @mixin(["createPost", "auth1"])
    req: {
      body: {
        content: "paragraph", @mock
      }
    },
    res: {
      body: {
        id: 0, @type
        userId: 0, @type
        content: "", @type
      }
    }
  }
}
"#;

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();

依赖项

~4.5MB
~59K SLoC