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)
+    }
 }