mirror of
https://github.com/lov3b/ecb-rates.git
synced 2025-04-20 05:10:11 +02:00
correct padding
This commit is contained in:
parent
4a83bb2b39
commit
3dd3b3f207
39
src/table.rs
39
src/table.rs
@ -1,11 +1,13 @@
|
|||||||
use colored::*;
|
use colored::*;
|
||||||
use std::fmt::Display;
|
use std::fmt::Display;
|
||||||
|
|
||||||
struct Table {
|
use crate::models::ExchangeRateResult;
|
||||||
|
|
||||||
|
pub struct Table {
|
||||||
header: Option<String>,
|
header: Option<String>,
|
||||||
column_left: String,
|
column_left: String,
|
||||||
column_right: String,
|
column_right: String,
|
||||||
rows: Vec<String>,
|
rows: Vec<(String, String)>,
|
||||||
pub color: bool,
|
pub color: bool,
|
||||||
pub width: usize,
|
pub width: usize,
|
||||||
}
|
}
|
||||||
@ -31,8 +33,7 @@ impl Table {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn add_row(&mut self, row_left: String, row_right: String) {
|
fn add_row(&mut self, row_left: String, row_right: String) {
|
||||||
self.rows.push(row_left);
|
self.rows.push((row_left, row_right));
|
||||||
self.rows.push(row_right);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,33 +45,41 @@ impl Display for Table {
|
|||||||
let middle_padding = " ".repeat(middle_padding_amount);
|
let middle_padding = " ".repeat(middle_padding_amount);
|
||||||
writeln!(
|
writeln!(
|
||||||
f,
|
f,
|
||||||
"{}{}{}\n",
|
"{}{}{}",
|
||||||
middle_padding,
|
middle_padding,
|
||||||
header.bold().cyan(),
|
header.bold().cyan(),
|
||||||
middle_padding
|
middle_padding
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
let right_padding_amount = self.width - self.column_left.len();
|
let right_padding_amount = self.width - self.column_left.len() - self.column_right.len();
|
||||||
let right_padding = " ".repeat(right_padding_amount);
|
let right_padding = " ".repeat(right_padding_amount);
|
||||||
writeln!(
|
writeln!(
|
||||||
f,
|
f,
|
||||||
"{}{}{}\n",
|
"{}{}{}",
|
||||||
self.column_left.bold().yellow(),
|
self.column_left.bold().yellow(),
|
||||||
right_padding,
|
right_padding,
|
||||||
self.column_right.bold().yellow()
|
self.column_right.bold().yellow()
|
||||||
)?;
|
)?;
|
||||||
writeln!(f, "{}\n", "-".repeat(self.width))?;
|
writeln!(f, "{}", "-".repeat(self.width))?;
|
||||||
|
|
||||||
for i in 1..(self.rows.len() - 2) {
|
for (left, right) in self.rows.iter() {
|
||||||
let left = &self.rows[i];
|
let padding_amount = self.width - left.len() - right.len();
|
||||||
let right = &self.rows[i + 1];
|
|
||||||
|
|
||||||
let padding_amount = (self.width - left.len() - right.len()) / 2;
|
|
||||||
let padding = " ".repeat(padding_amount);
|
let padding = " ".repeat(padding_amount);
|
||||||
writeln!(f, "{}{}{}\n", left.bold().green(), padding, right)?;
|
writeln!(f, "{}{}{}", left.bold().green(), padding, right)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
todo!()
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<ExchangeRateResult> for Table {
|
||||||
|
fn from(value: ExchangeRateResult) -> Self {
|
||||||
|
let mut table = Table::new(Some(value.time), "Currency".to_string(), "Rate".to_string());
|
||||||
|
for (key, val) in value.rates.into_iter() {
|
||||||
|
table.add_row(key, val.to_string());
|
||||||
|
}
|
||||||
|
|
||||||
|
table
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user