autocorrect/code/
json.rs

1// autocorrect: false
2use super::*;
3use autocorrect_derive::GrammarParser;
4use pest::Parser as P;
5use pest_derive::Parser;
6
7#[derive(GrammarParser, Parser)]
8#[grammar = "../grammar/json.pest"]
9struct JSONParser;
10
11#[cfg(test)]
12mod tests {
13    use super::*;
14    use indoc::indoc;
15    use pretty_assertions::assert_eq;
16
17    #[test]
18    fn it_format_json() {
19        let example = indoc! {r###"
20        {
21          "name": "你好hello世界 \"World\"",
22          "displayName": "JSON格式测试",
23          "publisher": "huacnlee",
24          "meta": {
25            // 第1行注释
26            "title": "第1个meta", 
27            /** 
28             * 第2行注释
29             * 第3行注释
30             */
31            "description" : "第2个meta", 
32            "测试key不格式化": 
33                  "Value要格式化",
34          },
35          "array": [
36            "hello你好",
37            "你好hello",
38          ],
39        }
40        "###};
41
42        let expect = indoc! {r###"
43        {
44          "name": "你好 hello 世界 \"World\"",
45          "displayName": "JSON 格式测试",
46          "publisher": "huacnlee",
47          "meta": {
48            // 第 1 行注释
49            "title": "第 1 个 meta", 
50            /** 
51             * 第 2 行注释
52             * 第 3 行注释
53             */
54            "description" : "第 2 个 meta", 
55            "测试key不格式化": 
56                  "Value 要格式化",
57          },
58          "array": [
59            "hello 你好",
60            "你好 hello",
61          ],
62        }
63        "###};
64
65        assert_eq!(expect, format_for(example, "json").to_string());
66    }
67}