///|
/// Independent colors for the four padding sides.
pub struct PaddingColor[C] {
colors : Sides[C]
} derive(Eq, Debug)
///|
pub fn[C] PaddingColor::new(
left~ : C,
right~ : C,
top~ : C,
bottom~ : C,
) -> PaddingColor[C] {
{ colors: Sides::new(left~, right~, top~, bottom~), }
}
///|
pub fn[C] PaddingColor::filled(color : C) -> PaddingColor[C] {
{ colors: Sides::filled(color), }
}
///|
pub fn PaddingColor::empty() -> PaddingColor[@papergrid.ANSIStr] {
PaddingColor::filled(@papergrid.ANSIStr::empty())
}
///|
pub fn[C] PaddingColor::to_sides(self : PaddingColor[C]) -> Sides[C] {
self.colors
}
///|
pub fn[C] PaddingColor::from_sides(colors : Sides[C]) -> PaddingColor[C] {
{ colors, }
}
///|
fn[C : @papergrid.ANSIFmt] indent_ansi_buffer(color : C) -> @papergrid.ANSIBuf {
let prefix = StringBuilder()
let suffix = StringBuilder()
@papergrid.ANSIFmt::fmt_ansi_prefix(color, prefix)
@papergrid.ANSIFmt::fmt_ansi_suffix(color, suffix)
@papergrid.ANSIBuf::new(prefix.to_string(), suffix.to_string())
}
///|
pub impl[C : @papergrid.ANSIFmt] CellOption for PaddingColor[C] with fn change(
self,
table,
entity,
) {
table.config.set_padding_color(
entity,
self.colors.map(color => Some(indent_ansi_buffer(color))),
)
}
///|
pub impl[C : @papergrid.ANSIFmt] TableOption for PaddingColor[C] with fn change(
self,
table,
) {
CellOption::change(self, table, Entity::Global)
}
///|
pub struct MarginColor[C] {
colors : Sides[C]
} derive(Debug)
///|
pub fn[C] MarginColor::new(
left~ : C,
right~ : C,
top~ : C,
bottom~ : C,
) -> MarginColor[C] {
{ colors: Sides::new(left~, right~, top~, bottom~), }
}
///|
pub fn[C] MarginColor::filled(color : C) -> MarginColor[C] {
{ colors: Sides::filled(color), }
}
///|
pub fn MarginColor::empty() -> MarginColor[@papergrid.ANSIStr] {
MarginColor::filled(@papergrid.ANSIStr::empty())
}
///|
pub impl[C : @papergrid.ANSIFmt] TableOption for MarginColor[C] with fn change(
self,
table,
) {
table.config.set_margin_color(
self.colors.map(color => Some(indent_ansi_buffer(color))),
)
}
///|
pub extend PaddingColor with Eq::{not_equal, equal}
///|
pub extend PaddingColor with @debug.Debug::{to_repr}
///|
pub extend PaddingColor with CellOption::{
change as change_cell,
hint_change as hint_change_cell,
}
///|
pub extend PaddingColor with TableOption::{change, hint_change}
///|
pub extend MarginColor with @debug.Debug::{to_repr}
///|
pub extend MarginColor with TableOption::{change, hint_change}