From ad1b3e62aba27afa19577b18d71b1c0ac4509847 Mon Sep 17 00:00:00 2001 From: Titus Wormer Date: Tue, 25 Oct 2022 12:52:42 +0200 Subject: Fix trailing whitespace around broken data Closes GH-13. Closes GH-14. --- src/construct/partial_data.rs | 2 ++ src/construct/partial_whitespace.rs | 2 ++ tests/fuzz.rs | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+) 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 { + 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 * "), + "

a *

", + "4-a: trailing whitespace and broken data" + ); + + assert_eq!( + to_html("_ "), + "

_

", + "4-b: trailing whitespace and broken data" + ); + + assert_eq!( + to_html_with_options("a ~ ", &Options::gfm())?, + "

a ~

", + "4-c: trailing whitespace and broken data" + ); + Ok(()) } -- cgit