diff options
author | Titus Wormer <tituswormer@gmail.com> | 2022-10-25 12:52:42 +0200 |
---|---|---|
committer | Titus Wormer <tituswormer@gmail.com> | 2022-10-25 12:52:42 +0200 |
commit | ad1b3e62aba27afa19577b18d71b1c0ac4509847 (patch) | |
tree | 063a6d231f66f4097de6af80f3333133dc9c96e0 | |
parent | 2cd3e65fd85b137f4951c5ccfdc259c06d49c80e (diff) | |
download | markdown-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.rs | 2 | ||||
-rw-r--r-- | src/construct/partial_whitespace.rs | 2 | ||||
-rw-r--r-- | tests/fuzz.rs | 18 |
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(()) } |