From c41f32f76304435e34f9d334b14a6cdda7b8961f Mon Sep 17 00:00:00 2001 From: Philipp A Date: Sat, 9 Nov 2019 20:15:18 +0100 Subject: Support multiline replace --- src/parser/conversion/block.rs | 4 ++-- src/parser/tests.rs | 10 ++++++++-- src/rst.pest | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/parser/conversion/block.rs b/src/parser/conversion/block.rs index 0c313f6..cc2d7d1 100644 --- a/src/parser/conversion/block.rs +++ b/src/parser/conversion/block.rs @@ -104,8 +104,8 @@ fn convert_substitution_def(pair: Pair) -> Result) -> Result, Error> { let mut pairs = pair.into_inner(); - let line = pairs.next().unwrap(); - line.into_inner().map(convert_inline).collect() + let paragraph = pairs.next().unwrap(); + paragraph.into_inner().map(convert_inline).collect() } fn convert_image(pair: Pair) -> Result where I: Element + ExtraAttributes { diff --git a/src/parser/tests.rs b/src/parser/tests.rs index 075b750..a3df64c 100644 --- a/src/parser/tests.rs +++ b/src/parser/tests.rs @@ -118,6 +118,8 @@ fn substitutions() { A |subst| in-line .. |subst| replace:: substitution +.. |subst2| replace:: it can also + be hanging ", rule: Rule::document, tokens: [ @@ -126,9 +128,13 @@ A |subst| in-line substitution_ref(2, 9, [ substitution_name(3, 8) ]), str(9, 17), ]), - substitution_def(19, 53, [ + substitution_def(19, 52, [ substitution_name(23, 28), - replace(30, 53, [ line(39, 53, [str(39, 52)]) ]) + replace(30, 52, [ paragraph(39, 52, [str(39, 52)]) ]), + ]), + substitution_def(53, 101, [ + substitution_name(57, 63), + replace(65, 101, [ paragraph(74, 101, [str(74, 86), str(88, 100)]) ]), ]), ] }; diff --git a/src/rst.pest b/src/rst.pest index a88e3b3..c1bf1b6 100644 --- a/src/rst.pest +++ b/src/rst.pest @@ -76,7 +76,7 @@ common_opt_name = { "class" | "name" } // Replace. A directive only usable in substitutions. -replace = { ^"replace::" ~ line } // TODO multiline +replace = { ^"replace::" ~ paragraph } // Image. A directive. -- cgit v1.2.3