aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilipp A2019-11-09 20:15:18 +0100
committerPhilipp A2019-11-09 20:15:18 +0100
commitc41f32f76304435e34f9d334b14a6cdda7b8961f (patch)
treebdd90f98641702c5efc339e02515e8486d46d52a
parent2ddff4fbbfbf4593260b96e57e7f975d2d003714 (diff)
downloadrust-rst-c41f32f76304435e34f9d334b14a6cdda7b8961f.tar.bz2
Support multiline replace
-rw-r--r--src/parser/conversion/block.rs4
-rw-r--r--src/parser/tests.rs10
-rw-r--r--src/rst.pest2
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.