diff options
author | Jovansonlee Cesar <ivanceras@gmail.com> | 2020-11-26 00:37:09 +0800 |
---|---|---|
committer | Jovansonlee Cesar <ivanceras@gmail.com> | 2020-11-26 00:37:09 +0800 |
commit | a33379db295d188fcbee430399401d16c535ddd9 (patch) | |
tree | c2c4233cfdeaa59c59f277b6ed9153d9a83f08e6 | |
parent | b89293bc61233f746474c57b23db09c71a6ac0c3 (diff) |
Fix some bugs on text escaping, where the last bit of the text at the end is omitted
-rw-r--r-- | svgbob/TODO.md | 1 | ||||
-rw-r--r-- | svgbob/src/buffer/cell_buffer.rs | 26 | ||||
-rw-r--r-- | svgbob/src/buffer/fragment_buffer/fragment/line.rs | 1 | ||||
-rw-r--r-- | svgbob/test_data/example.bob | 8 |
4 files changed, 32 insertions, 4 deletions
diff --git a/svgbob/TODO.md b/svgbob/TODO.md index 19c8dcf..1a28791 100644 --- a/svgbob/TODO.md +++ b/svgbob/TODO.md @@ -16,3 +16,4 @@ - [ ] Fix the double arrow issue When there is 2 arrows in the middle of a line `---->>-------` or `----<<----` - [ ] Clean the project enforce deny warnings. +- [ ] Fix a bug where an escaped text has whitespaces, the whitespaces are gone. diff --git a/svgbob/src/buffer/cell_buffer.rs b/svgbob/src/buffer/cell_buffer.rs index d47542c..99a2e53 100644 --- a/svgbob/src/buffer/cell_buffer.rs +++ b/svgbob/src/buffer/cell_buffer.rs @@ -201,8 +201,10 @@ impl CellBuffer { let mut fragments: Vec<Fragment> = vec_fragments.into_iter().flatten().collect(); + fragments.extend(single_member_fragments); fragments.extend(self.escaped_text_nodes()); + let svg_node = Self::fragments_to_node( fragments, self.legend_css(), @@ -480,6 +482,8 @@ impl CellBuffer { no_escaped_text.push_str(&" ".repeat(end + 1 - start)); index = end + 1; } + // the rest of the text + no_escaped_text.push_str(&raw[index..raw.len()]); } (escaped_text, no_escaped_text) } @@ -561,6 +565,28 @@ mod tests { } #[test] + fn test_escape_line2() { + let raw = r#"The quick brown fox jumps over the "lazy" dog"#; + let ex2 = r#"The quick brown fox jumps over the dog"#; + let (escaped, unescaped) = CellBuffer::escape_line(0, raw); + println!("escaped: {:#?}", escaped); + println!("unescaped: {}", unescaped); + assert_eq!(vec![(Cell::new(35, 0), "lazy".to_string())], escaped); + assert_eq!(ex2, unescaped); + } + + #[test] + fn test_escape_line3() { + let raw = r#" in between "| |" these "#; + let ex2 = r#" in between these "#; + let (escaped, unescaped) = CellBuffer::escape_line(0, raw); + println!("escaped: {:#?}", escaped); + println!("unescaped: {}", unescaped); + assert_eq!(vec![(Cell::new(12, 0), "| |".to_string())], escaped); + assert_eq!(ex2, unescaped); + } + + #[test] fn test_simple_adjacents() { let art = r#" .. ._. diff --git a/svgbob/src/buffer/fragment_buffer/fragment/line.rs b/svgbob/src/buffer/fragment_buffer/fragment/line.rs index 9f5586d..1be9425 100644 --- a/svgbob/src/buffer/fragment_buffer/fragment/line.rs +++ b/svgbob/src/buffer/fragment_buffer/fragment/line.rs @@ -557,6 +557,7 @@ impl PartialEq for Line { #[cfg(test)] mod tests { use super::*; + use crate::buffer::fragment_buffer::fragment::polygon::PolygonTag; use crate::buffer::CellGrid; #[test] diff --git a/svgbob/test_data/example.bob b/svgbob/test_data/example.bob index 7e69484..646bc48 100644 --- a/svgbob/test_data/example.bob +++ b/svgbob/test_data/example.bob @@ -45,10 +45,10 @@ What can it do? ! `.____.' `._____.' ! ! ______ ! ! ,' `. ! - ! / \ .-----. .----. ! - ! | | \ / \ \ ! - ! | | \ / \ \ ! - ! \ / ' '----' ! + ! / \ .-----. .----. ".--------------." ! + ! | | \ / \ \ "| Don't draw me|" ! + ! | | \ / \ \ "| |" ! + ! \ / ' '----' "'--------------'" ! ! `.______.' ! ! ! `~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' |