mirror of
https://gitlab.com/arnekeller/ascii-table.git
synced 2024-12-04 21:49:08 +00:00
save game
This commit is contained in:
parent
967acfed9f
commit
757531723a
64
src/lib.rs
64
src/lib.rs
@ -236,28 +236,6 @@ impl AsciiTable {
|
|||||||
self.truncate_widths(result)
|
self.truncate_widths(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn count_characters(&self, cell: &str) -> usize {
|
|
||||||
// let mut count = 0;
|
|
||||||
// let mut block = false;
|
|
||||||
// let mut iter = cell.chars().peekable();
|
|
||||||
// while let Some(ch) = iter.next() {
|
|
||||||
// if block {
|
|
||||||
// if ch != '\u{1b}' && ch != '[' && ch != ';' && ch != 'm' && !('0'..'9').contains(&ch) {
|
|
||||||
// block = false;
|
|
||||||
// count += 1;
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// if ch == '\u{1b}' && Some(&'[') == iter.peek() {
|
|
||||||
// block = true;
|
|
||||||
// } else {
|
|
||||||
// count += 1;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// count
|
|
||||||
cell.chars().count()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn truncate_widths(&self, mut widths: Vec<usize>) -> Vec<usize> {
|
fn truncate_widths(&self, mut widths: Vec<usize>) -> Vec<usize> {
|
||||||
let max_width = self.max_width;
|
let max_width = self.max_width;
|
||||||
let table_padding = Self::smallest_width(widths.len());
|
let table_padding = Self::smallest_width(widths.len());
|
||||||
@ -330,22 +308,22 @@ impl AsciiTable {
|
|||||||
result.pop();
|
result.pop();
|
||||||
}
|
}
|
||||||
if result.pop().is_some() {
|
if result.pop().is_some() {
|
||||||
result.push('+')
|
result.push_visible('+')
|
||||||
}
|
}
|
||||||
result
|
result
|
||||||
} else {
|
} else {
|
||||||
let mut result = text.clone();
|
let mut result = text.clone();
|
||||||
match align {
|
match align {
|
||||||
Align::Left => while result.char_len() < len {
|
Align::Left => while result.char_len() < len {
|
||||||
result.push(pad)
|
result.push_visible(pad)
|
||||||
}
|
}
|
||||||
Align::Right => while result.char_len() < len {
|
Align::Right => while result.char_len() < len {
|
||||||
result.insert(0, pad)
|
result.lpush_visible(pad)
|
||||||
}
|
}
|
||||||
Align::Center => while result.char_len() < len {
|
Align::Center => while result.char_len() < len {
|
||||||
result.push(pad);
|
result.push_visible(pad);
|
||||||
if result.char_len() < len {
|
if result.char_len() < len {
|
||||||
result.insert(0, pad)
|
result.lpush_visible(pad)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -368,6 +346,24 @@ impl SmartString {
|
|||||||
fn from<T>(string: T) -> Self
|
fn from<T>(string: T) -> Self
|
||||||
where T: Display {
|
where T: Display {
|
||||||
// TODO:
|
// TODO:
|
||||||
|
// let mut count = 0;
|
||||||
|
// let mut block = false;
|
||||||
|
// let mut iter = cell.chars().peekable();
|
||||||
|
// while let Some(ch) = iter.next() {
|
||||||
|
// if block {
|
||||||
|
// if ch != '\u{1b}' && ch != '[' && ch != ';' && ch != 'm' && !('0'..'9').contains(&ch) {
|
||||||
|
// block = false;
|
||||||
|
// count += 1;
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// if ch == '\u{1b}' && Some(&'[') == iter.peek() {
|
||||||
|
// block = true;
|
||||||
|
// } else {
|
||||||
|
// count += 1;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// count
|
||||||
Self { fragments: vec![(true, string.to_string())] }
|
Self { fragments: vec![(true, string.to_string())] }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -391,11 +387,19 @@ impl SmartString {
|
|||||||
.and_then(|(_, string)| string.pop())
|
.and_then(|(_, string)| string.pop())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn push(&mut self, ch: char) {
|
fn push_visible(&mut self, ch: char) {
|
||||||
todo!()
|
let last_fragment = self.fragments.iter_mut()
|
||||||
|
.filter(|(visible, _)| *visible)
|
||||||
|
.map(|(_, string)| string)
|
||||||
|
.last();
|
||||||
|
if let Some(fragment) = last_fragment {
|
||||||
|
fragment.push(ch);
|
||||||
|
} else {
|
||||||
|
self.fragments.push((true, ch.to_string()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn insert(&mut self, index: usize, ch: char) {
|
fn lpush_visible(&mut self, ch: char) {
|
||||||
todo!()
|
todo!()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user