X-Git-Url: http://git.scottworley.com/tablify/blobdiff_plain/d2373a68076a0ea98ebaa4e777a518d466977128..1532a3826b3ce55682d5f312be3244d1c6fefe74:/src/lib.rs diff --git a/src/lib.rs b/src/lib.rs index 11ee0c3..1807333 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -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], 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], 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, std::io::Error> {