aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Titus Wormer <tituswormer@gmail.com>2022-10-25 12:52:42 +0200
committerLibravatar Titus Wormer <tituswormer@gmail.com>2022-10-25 12:52:42 +0200
commitad1b3e62aba27afa19577b18d71b1c0ac4509847 (patch)
tree063a6d231f66f4097de6af80f3333133dc9c96e0
parent2cd3e65fd85b137f4951c5ccfdc259c06d49c80e (diff)
downloadmarkdown-rs-ad1b3e62aba27afa19577b18d71b1c0ac4509847.tar.gz
markdown-rs-ad1b3e62aba27afa19577b18d71b1c0ac4509847.tar.bz2
markdown-rs-ad1b3e62aba27afa19577b18d71b1c0ac4509847.zip
Fix trailing whitespace around broken data
Closes GH-13. Closes GH-14.
-rw-r--r--src/construct/partial_data.rs2
-rw-r--r--src/construct/partial_whitespace.rs2
-rw-r--r--tests/fuzz.rs18
3 files changed, 22 insertions, 0 deletions
diff --git a/src/construct/partial_data.rs b/src/construct/partial_data.rs
index a27730c..fcd142d 100644
--- a/src/construct/partial_data.rs
+++ b/src/construct/partial_data.rs
@@ -74,6 +74,8 @@ pub fn inside(tokenizer: &mut Tokenizer) -> State {
/// Merge adjacent data events.
pub fn resolve(tokenizer: &mut Tokenizer) -> Option<Subresult> {
+ tokenizer.map.consume(&mut tokenizer.events);
+
let mut index = 0;
// Loop through events and merge adjacent data events.
diff --git a/src/construct/partial_whitespace.rs b/src/construct/partial_whitespace.rs
index bb25075..8e58838 100644
--- a/src/construct/partial_whitespace.rs
+++ b/src/construct/partial_whitespace.rs
@@ -67,6 +67,8 @@ use alloc::vec;
/// Resolve whitespace.
pub fn resolve_whitespace(tokenizer: &mut Tokenizer, hard_break: bool, trim_whole: bool) {
+ tokenizer.map.consume(&mut tokenizer.events);
+
let mut index = 0;
while index < tokenizer.events.len() {
diff --git a/tests/fuzz.rs b/tests/fuzz.rs
index 8d64ff2..a4a6765 100644
--- a/tests/fuzz.rs
+++ b/tests/fuzz.rs
@@ -30,5 +30,23 @@ fn fuzz() -> Result<(), String> {
"3-b: containers should not pierce into indented code"
);
+ assert_eq!(
+ to_html("a * "),
+ "<p>a *</p>",
+ "4-a: trailing whitespace and broken data"
+ );
+
+ assert_eq!(
+ to_html("_ "),
+ "<p>_</p>",
+ "4-b: trailing whitespace and broken data"
+ );
+
+ assert_eq!(
+ to_html_with_options("a ~ ", &Options::gfm())?,
+ "<p>a ~</p>",
+ "4-c: trailing whitespace and broken data"
+ );
+
Ok(())
}