diff options
| author | Philipp A | 2019-11-09 20:15:18 +0100 |
|---|---|---|
| committer | Philipp A | 2019-11-09 20:15:18 +0100 |
| commit | c41f32f76304435e34f9d334b14a6cdda7b8961f (patch) | |
| tree | bdd90f98641702c5efc339e02515e8486d46d52a | |
| parent | 2ddff4fbbfbf4593260b96e57e7f975d2d003714 (diff) | |
| download | rust-rst-c41f32f76304435e34f9d334b14a6cdda7b8961f.tar.bz2 | |
Support multiline replace
| -rw-r--r-- | src/parser/conversion/block.rs | 4 | ||||
| -rw-r--r-- | src/parser/tests.rs | 10 | ||||
| -rw-r--r-- | 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<Rule>) -> Result<e::SubstitutionDefinitio fn convert_replace(pair: Pair<Rule>) -> Result<Vec<c::TextOrInlineElement>, 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<I>(pair: Pair<Rule>) -> Result<I, Error> where I: Element + ExtraAttributes<a::Image> { 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. |
