aboutsummaryrefslogtreecommitdiffstats
path: root/src/parser/mod.rs
blob: 6e3f65e47b9db559199951d7a41276df86d38286 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
pub mod token;
pub mod serialize;

#[allow(unused_imports)]
use pest::consumes_to;
#[allow(unused_imports)]
use pest::parses_to;
use pest_derive::Parser;

#[derive(Parser)]
#[grammar = "rst.pest"]
pub struct RstParser;


#[test]
fn plain() {
    parses_to! {
        parser: RstParser,
        input:  "line\n",
        rule:   Rule::paragraph,
        tokens: [
            paragraph(0, 5, [
                line(0, 5)
            ])
        ]
    };
}

/* #[test]
fn title() {
    parses_to! {
        parser: RstParser,
        input:  "\
Title
=====
",
        rule:   Rule::title,
        tokens: [
            title(0, 12, [
                line(0, 6),
                adornments(6, 11),
            ])
        ]
    };
}

#[test]
fn title_overline() {
    parses_to! {
        parser: RstParser,
        input:  "\
-----
Title
-----
",
        rule:   Rule::title,
        tokens: [
            title(0, 18, [
                adornments(0, 6),
                line(6, 12),
                adornments(12, 18),
            ])
        ]
    };
} */

#[test]
fn nested_lists() {
    parses_to! {
        parser: RstParser,
        input: "\
paragraph

-  item 1
-  item 2
   more text
   more text 2
   more text 3
   - nested item 1
   - nested item 2
   - nested item 3
",
        rule: Rule::document,
        tokens: [
            paragraph(0, 10, [ line(0, 10) ]),
            bullet_list(11, 131, [
                bullet_item(11, 21, [ line(14, 21) ]),
                bullet_item(21, 131, [
                    line(24, 31),
                    paragraph(34, 74, [
                        line(34, 44),
                        line(47, 59),
                        line(62, 74),
                    ]),
                    bullet_list(77, 131, [
                        bullet_item(77, 93, [ line(79, 93) ]),
                        bullet_item(96, 112, [ line(98, 112) ]),
                        bullet_item(115, 131, [ line(117, 131) ]),
                    ]),
                ]),
            ]),
        ]
    }
}