Improved inspect
This commit is contained in:
@@ -47,15 +47,18 @@ pub struct MarketItem {
|
||||
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
|
||||
pub enum InspectTarget {
|
||||
None,
|
||||
Some(Vec<InspectItem>),
|
||||
Some(Vec<InspectRow>),
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
|
||||
pub struct InspectRow(pub InspectItem, pub InspectItem, pub InspectItem);
|
||||
|
||||
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
|
||||
pub enum InspectItem {
|
||||
String(String),
|
||||
Name(String),
|
||||
Symbol(String),
|
||||
USD(f64),
|
||||
F64(f64),
|
||||
USD(Decimal),
|
||||
F64(Decimal),
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
|
||||
|
||||
@@ -10,15 +10,24 @@ impl Formatted for InspectTarget {
|
||||
match self {
|
||||
Self::None => vec!["\x1b[2mnothing to inspect\x1b[0m".to_string()],
|
||||
|
||||
Self::Some(items) => items
|
||||
Self::Some(items) => {
|
||||
let items = items
|
||||
.iter()
|
||||
.map(|item| match item {
|
||||
InspectItem::F64(v) => format_f64(*v),
|
||||
InspectItem::USD(v) => format!("${}", format_f64(*v)),
|
||||
InspectItem::Symbol(v) => format!("\x1b[35m{v}\x1b[0m"),
|
||||
InspectItem::String(v) => v.clone(),
|
||||
.map(|row| {
|
||||
(
|
||||
format_inspect_item(&row.0),
|
||||
format_inspect_item(&row.1),
|
||||
format_inspect_item(&row.2),
|
||||
)
|
||||
})
|
||||
.collect(),
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
items
|
||||
.iter()
|
||||
.map(|(a, b, c)| Triple(a, b, c))
|
||||
.collect::<Vec<_>>()
|
||||
.get_formatted()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -226,6 +235,15 @@ pub fn apply_padding(mut items: Vec<String>) -> Vec<String> {
|
||||
items
|
||||
}
|
||||
|
||||
pub fn format_inspect_item(item: &InspectItem) -> String {
|
||||
match item {
|
||||
InspectItem::F64(v) => format_f64(v.as_f64()),
|
||||
InspectItem::USD(v) => format!("${}", format_f64(v.as_f64())),
|
||||
InspectItem::Symbol(v) => format!("\x1b[35m{v}\x1b[0m"),
|
||||
InspectItem::Name(v) => v.clone(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn format_symbol(value: &str) -> String {
|
||||
format!("\x1b[35m{value}\x1b[0m")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user