From 363697b4f352f0392b5f255cff25b67d395d4688 Mon Sep 17 00:00:00 2001 From: syaw0 <siamhb7@protonmail.com> Date: Sun, 3 Nov 2024 10:15:38 +0330 Subject: [PATCH] feat : Use default paint type if there is only one or zero pain type in the start_styles --- src/styled_text.rs | 54 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/src/styled_text.rs b/src/styled_text.rs index e50468d..d097e30 100644 --- a/src/styled_text.rs +++ b/src/styled_text.rs @@ -48,6 +48,8 @@ impl StyledText { } pub fn paint(&mut self) -> String { + println!("{:?}", self.start_styles); + let mut default_paint_type = Styles::StylePaintType(PaintType::FG); let indexes: Vec<usize> = self.start_styles .iter() .enumerate() @@ -59,6 +61,19 @@ impl StyledText { }) .collect(); + if indexes.len() == 1 { + // We sure about 1 element exist on i + default_paint_type = self.start_styles + .get(indexes[0]) + .unwrap_or(&default_paint_type) + .clone(); + + // * call for make style on start_styles + } + if indexes.len() > 1 { + // * each slice get it's own paint type! + } + println!("{:?}", indexes); // Add formatter reset in the end // self.end_styles.push(); @@ -175,7 +190,44 @@ mod test { #[test] fn test_paint_type() { - let txt = txt("Siavash").bright_blue().fg().red().yellow().bg().paint(); + let txt = txt("Siavash").bright_blue().fg().red().bg().paint(); assert_eq!(true, false); } + + #[test] + fn test_with_one_paint_type() { + let no: Vec<Styles> = txt("Hello there") + .bright_blue() + .red() + .bg() + .start_styles.iter() + .filter(|s| { + match s { + Styles::StylePaintType(_) => true, + _ => false, + } + }) + .cloned() + .collect(); + + assert_eq!(no.len(), 1) + } + + #[test] + fn test_with_zero_paint_type() { + let no: Vec<Styles> = txt("Hello there") + .bright_blue() + .red() + .start_styles.iter() + .filter(|s| { + match s { + Styles::StylePaintType(_) => true, + _ => false, + } + }) + .cloned() + .collect(); + + assert_eq!(no.len(), 0) + } }