From 7b9db3d75ce39c97a5002afb22fbcee0ef429a48 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 11 Nov 2019 13:55:56 -0500 Subject: actually, this method isn't necessary at all --- src/row.rs | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/src/row.rs b/src/row.rs index 439bf4b..da5b398 100644 --- a/src/row.rs +++ b/src/row.rs @@ -76,23 +76,29 @@ impl Row { ) { let mut prev_was_wide = false; - for cell in self + let mut prev_col = start; + for (col, cell) in self .cells() + .enumerate() .skip(start as usize) - .take(width.min(self.content_width(start, false)) as usize) + .take(width as usize) { if prev_was_wide { prev_was_wide = false; continue; } + prev_was_wide = cell.is_wide(); + let col: u16 = col.try_into().unwrap(); if cell.has_contents() { + for _ in 0..(col - prev_col) { + contents.push(' '); + } + prev_col += col - prev_col; + contents.push_str(&cell.contents()); - } else { - contents.push(' '); + prev_col += if cell.is_wide() { 2 } else { 1 }; } - - prev_was_wide = cell.is_wide(); } } @@ -113,7 +119,7 @@ impl Row { .cells() .enumerate() .skip(start as usize) - .take(width.min(self.content_width(start, true)) as usize) + .take(width as usize) { if prev_was_wide { prev_was_wide = false; @@ -219,19 +225,4 @@ impl Row { (prev_pos, prev_attrs) } - - fn content_width(&self, start: u16, formatting: bool) -> u16 { - let default_attrs = crate::attrs::Attrs::default(); - for (col, cell) in - self.cells.iter().skip(start as usize).enumerate().rev() - { - if cell.has_contents() - || (formatting && cell.attrs() != &default_attrs) - { - let width: u16 = col.try_into().unwrap(); - return width + 1; - } - } - 0 - } } -- cgit v1.2.3-54-g00ecf