]> git.scottworley.com Git - tablify/commitdiff
tally_marks: Return type: String β†’ HTML
authorScott Worley <scottworley@scottworley.com>
Sun, 12 Jul 2026 02:33:54 +0000 (19:33 -0700)
committerScott Worley <scottworley@scottworley.com>
Sun, 12 Jul 2026 02:54:07 +0000 (19:54 -0700)
src/lib.rs

index 11ee0c38912872503178c90e3efab5db0cf98e3a..1807333a3608f9a3202b241cdeebef79bf612130 100644 (file)
@@ -4,15 +4,15 @@ use std::fmt::Write;
 use std::io::BufRead;
 use std::iter::Iterator;
 
-fn tally_marks(n: usize, mark: Option<&str>) -> String {
-    match mark {
+fn tally_marks(n: usize, mark: Option<&str>) -> HTML {
+    HTML(match mark {
         None => {
             let fives = { 0..n / 5 }.map(|_| '𝍸');
             let ones = { 0..n % 5 }.map(|_| '𝍷');
             fives.chain(ones).collect()
         }
         Some(m) => { 0..n }.map(|_| m).collect(),
-    }
+    })
 }
 
 #[derive(PartialEq, Eq, Debug)]
@@ -308,7 +308,7 @@ fn render_instances(instances: &[Option<String>], mark: Option<&str>) -> HTML {
             None => tally += 1,
             Some(ref content) => {
                 if tally > 0 {
-                    out.push(HTML(tally_marks(tally, mark)));
+                    out.push(tally_marks(tally, mark));
                     tally = 0;
                 }
                 out.push(HTML::escape(content));
@@ -316,7 +316,7 @@ fn render_instances(instances: &[Option<String>], mark: Option<&str>) -> HTML {
         }
     }
     if tally > 0 {
-        out.push(HTML(tally_marks(tally, mark)));
+        out.push(tally_marks(tally, mark));
     }
     HTML(
         out.into_iter()
@@ -504,22 +504,22 @@ mod tests {
 
     #[test]
     fn test_tally_marks() {
-        assert_eq!(tally_marks(1, None), "𝍷");
-        assert_eq!(tally_marks(2, None), "𝍷𝍷");
-        assert_eq!(tally_marks(3, None), "𝍷𝍷𝍷");
-        assert_eq!(tally_marks(4, None), "𝍷𝍷𝍷𝍷");
-        assert_eq!(tally_marks(5, None), "𝍸");
-        assert_eq!(tally_marks(6, None), "𝍸𝍷");
-        assert_eq!(tally_marks(7, None), "𝍸𝍷𝍷");
-        assert_eq!(tally_marks(8, None), "𝍸𝍷𝍷𝍷");
-        assert_eq!(tally_marks(9, None), "𝍸𝍷𝍷𝍷𝍷");
-        assert_eq!(tally_marks(10, None), "𝍸𝍸");
-        assert_eq!(tally_marks(11, None), "𝍸𝍸𝍷");
-        assert_eq!(tally_marks(1, Some("x")), "x");
-        assert_eq!(tally_marks(4, Some("x")), "xxxx");
-        assert_eq!(tally_marks(5, Some("x")), "xxxxx");
-        assert_eq!(tally_marks(6, Some("x")), "xxxxxx");
-        assert_eq!(tally_marks(2, Some("πŸ”")), "πŸ”πŸ”");
+        assert_eq!(tally_marks(1, None), "𝍷".into());
+        assert_eq!(tally_marks(2, None), "𝍷𝍷".into());
+        assert_eq!(tally_marks(3, None), "𝍷𝍷𝍷".into());
+        assert_eq!(tally_marks(4, None), "𝍷𝍷𝍷𝍷".into());
+        assert_eq!(tally_marks(5, None), "𝍸".into());
+        assert_eq!(tally_marks(6, None), "𝍸𝍷".into());
+        assert_eq!(tally_marks(7, None), "𝍸𝍷𝍷".into());
+        assert_eq!(tally_marks(8, None), "𝍸𝍷𝍷𝍷".into());
+        assert_eq!(tally_marks(9, None), "𝍸𝍷𝍷𝍷𝍷".into());
+        assert_eq!(tally_marks(10, None), "𝍸𝍸".into());
+        assert_eq!(tally_marks(11, None), "𝍸𝍸𝍷".into());
+        assert_eq!(tally_marks(1, Some("x")), "x".into());
+        assert_eq!(tally_marks(4, Some("x")), "xxxx".into());
+        assert_eq!(tally_marks(5, Some("x")), "xxxxx".into());
+        assert_eq!(tally_marks(6, Some("x")), "xxxxxx".into());
+        assert_eq!(tally_marks(2, Some("πŸ”")), "πŸ”πŸ”".into());
     }
 
     fn read_rows(input: impl std::io::Read) -> Result<Vec<Rowlike>, std::io::Error> {