From 39aa2104379cc26b3b75c9c1518e6cdb21a3c3b6 Mon Sep 17 00:00:00 2001 From: Benjamin Sago Date: Thu, 17 Dec 2015 10:34:11 +0800 Subject: Rename cell 'length' to 'width' Because, strictly speaking, it's not a length, it's a width! Also, re-order some struct constructors so that they're no longer order-dependent (it's no longer the case that a value will be borrowed for one field then consumed in another, meaning they have to be ordered in a certain way to compile. Now the value is just worked out beforehand and the fields can be specified in any order) --- src/output/cell.rs | 20 ++++++++++++-------- src/output/details.rs | 17 ++++++++++------- src/output/grid_details.rs | 4 ++-- 3 files changed, 24 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/output/cell.rs b/src/output/cell.rs index bb0d8ee..4e4acbe 100644 --- a/src/output/cell.rs +++ b/src/output/cell.rs @@ -23,7 +23,7 @@ pub struct TextCell { pub contents: TextCellContents, /// The Unicode “display width” of this cell. - pub length: DisplayWidth, + pub width: DisplayWidth, } impl TextCell { @@ -31,9 +31,11 @@ impl TextCell { /// Creates a new text cell that holds the given text in the given style, /// computing the Unicode width of the text. pub fn paint(style: Style, text: String) -> Self { + let width = DisplayWidth::from(&*text); + TextCell { - length: DisplayWidth::from(&*text), contents: vec![ style.paint(text) ], + width: width, } } @@ -41,9 +43,11 @@ impl TextCell { /// computing the Unicode width of the text. (This could be merged with /// `paint`, but.) pub fn paint_str(style: Style, text: &'static str) -> Self { + let width = DisplayWidth::from(text); + TextCell { - length: DisplayWidth::from(text), contents: vec![ style.paint(text) ], + width: width, } } @@ -55,8 +59,8 @@ impl TextCell { /// tabular data when there is *something* in each cell. pub fn blank(style: Style) -> Self { TextCell { - length: DisplayWidth::from(1), contents: vec![ style.paint("-") ], + width: DisplayWidth::from(1), } } @@ -66,21 +70,21 @@ impl TextCell { pub fn add_spaces(&mut self, count: usize) { use std::iter::repeat; - (*self.length) += count; + (*self.width) += count; let spaces: String = repeat(' ').take(count).collect(); self.contents.push(Style::default().paint(spaces)); } /// Adds the contents of another `ANSIString` to the end of this cell. - pub fn push(&mut self, string: ANSIString<'static>, length: usize) { + pub fn push(&mut self, string: ANSIString<'static>, extra_width: usize) { self.contents.push(string); - (*self.length) += length; + (*self.width) += extra_width; } /// Adds all the contents of another `TextCell` to the end of this cell. pub fn append(&mut self, other: TextCell) { - (*self.length) += *other.length; + (*self.width) += *other.width; self.contents.extend(other.contents); } diff --git a/src/output/details.rs b/src/output/details.rs index edfc2a6..97be06f 100644 --- a/src/output/details.rs +++ b/src/output/details.rs @@ -279,10 +279,11 @@ impl Details { for (index, egg) in file_eggs.into_iter().enumerate() { let mut files = Vec::new(); let mut errors = egg.errors; + let width = DisplayWidth::from(&*egg.file.name); let name = TextCell { - length: DisplayWidth::from(&*egg.file.name), contents: filename(egg.file, &self.colours, true), + width: width, }; let row = Row { @@ -361,7 +362,7 @@ impl Row { /// not, returns 0. fn column_width(&self, index: usize) -> usize { match self.cells { - Some(ref cells) => *cells[index].length, + Some(ref cells) => *cells[index].width, None => 0, } } @@ -460,9 +461,11 @@ impl Table where U: Users { } pub fn filename_cell(&self, file: File, links: bool) -> TextCell { + let width = DisplayWidth::from(&*file.name); + TextCell { - length: DisplayWidth::from(&*file.name), contents: filename(file, &self.colours, links), + width: width, } } @@ -543,8 +546,8 @@ impl Table where U: Users { let width = DisplayWidth::from(chars.len()); TextCell { - length: width, contents: chars, + width: width, } } @@ -598,7 +601,7 @@ impl Table where U: Users { let width = DisplayWidth::from(number.len() + symbol.len()); TextCell { - length: width, + width: width, contents: vec![ self.colours.size.numbers.paint(number), self.colours.size.unit.paint(symbol), @@ -631,7 +634,7 @@ impl Table where U: Users { }; TextCell { - length: DisplayWidth::from(2), + width: DisplayWidth::from(2), contents: vec![ git_char(git.staged), git_char(git.unstaged) @@ -688,7 +691,7 @@ impl Table where U: Users { if let Some(cells) = row.cells { for (n, (this_cell, width)) in cells.into_iter().zip(column_widths.iter()).enumerate() { - let padding = width - *this_cell.length; + let padding = width - *this_cell.width; match self.columns[n].alignment() { Alignment::Left => { cell.append(this_cell); cell.add_spaces(padding); } diff --git a/src/output/grid_details.rs b/src/output/grid_details.rs index 271a3a3..3dcf4b1 100644 --- a/src/output/grid_details.rs +++ b/src/output/grid_details.rs @@ -106,7 +106,7 @@ impl GridDetails { if row < column.len() { let cell = grid::Cell { contents: ANSIStrings(&column[row].contents).to_string(), - width: *column[row].length, + width: *column[row].width, }; grid.add(cell); @@ -119,7 +119,7 @@ impl GridDetails { for cell in column.iter() { let cell = grid::Cell { contents: ANSIStrings(&cell.contents).to_string(), - width: *cell.length, + width: *cell.width, }; grid.add(cell); -- cgit v1.2.3