diff options
Diffstat (limited to 'src/parser/mod.rs')
| -rw-r--r-- | src/parser/mod.rs | 56 |
1 files changed, 44 insertions, 12 deletions
diff --git a/src/parser/mod.rs b/src/parser/mod.rs index 07a2278..ab7e232 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs @@ -1,5 +1,10 @@ pub mod token; +#[allow(unused_imports)] +use pest::consumes_to; +#[allow(unused_imports)] +use pest::parses_to; + #[derive(Parser)] #[grammar = "rst.pest"] pub struct RstParser; @@ -7,29 +12,56 @@ pub struct RstParser; #[test] -fn line() { - use pest::Parser; - let result = RstParser::parse(Rule::plain, &"line\n").expect("unsuccessful parse").next().unwrap(); - eprintln!("{}", result); +fn plain() { + parses_to! { + parser: RstParser, + input: "line\n", + rule: Rule::plain, + tokens: [ + plain(0, 5, [ + inlines(0, 5, [ + inline(0, 4, [str(0, 4)]), + EOI(5, 5) + ]) + ]) + ] + }; } #[test] fn title() { - use pest::Parser; - let result = RstParser::parse(Rule::heading, &"\ + parses_to! { + parser: RstParser, + input: "\ Title ===== -").expect("unsuccessful parse").next().unwrap(); - eprintln!("{}", result); +", + rule: Rule::heading, + tokens: [ + heading(0, 12, [ + inline(0, 5, [str(0, 5)]), + setext_bottom(6, 12), + ]) + ] + }; } #[test] fn heading_title() { - use pest::Parser; - let result = RstParser::parse(Rule::heading_title, &"\ + parses_to! { + parser: RstParser, + input: "\ ----- Title ----- -").expect("unsuccessful parse").next().unwrap(); - eprintln!("{}", result); +", + rule: Rule::heading_title, + tokens: [ + heading_title(0, 18, [ + setext_bottom(0, 6), + inline(6, 11, [str(6, 11)]), + setext_bottom(12, 18), + ]) + ] + }; } |
