X-Git-Url: http://git.scottworley.com/tablify/blobdiff_plain/1532a3826b3ce55682d5f312be3244d1c6fefe74..7a246d87bb2de224662bb80526fd5ed31be05cbe:/src/lib.rs diff --git a/src/lib.rs b/src/lib.rs index 1807333..bfcfdec 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,12 +4,15 @@ use std::fmt::Write; use std::io::BufRead; use std::iter::Iterator; +const TALLY_FONT: &str = "BabelStone Han"; + 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() + let marks: String = fives.chain(ones).collect(); + format!("{marks}") } Some(m) => { 0..n }.map(|_| m).collect(), }) @@ -504,17 +507,72 @@ mod tests { #[test] fn test_tally_marks() { - 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, None), + HTML(format!( + "ð·" + )) + ); + assert_eq!( + tally_marks(2, None), + HTML(format!( + "ð·ð·" + )) + ); + assert_eq!( + tally_marks(3, None), + HTML(format!( + "ð·ð·ð·" + )) + ); + assert_eq!( + tally_marks(4, None), + HTML(format!( + "ð·ð·ð·ð·" + )) + ); + assert_eq!( + tally_marks(5, None), + HTML(format!( + "ð¸" + )) + ); + assert_eq!( + tally_marks(6, None), + HTML(format!( + "ð¸ð·" + )) + ); + assert_eq!( + tally_marks(7, None), + HTML(format!( + "ð¸ð·ð·" + )) + ); + assert_eq!( + tally_marks(8, None), + HTML(format!( + "ð¸ð·ð·ð·" + )) + ); + assert_eq!( + tally_marks(9, None), + HTML(format!( + "ð¸ð·ð·ð·ð·" + )) + ); + assert_eq!( + tally_marks(10, None), + HTML(format!( + "ð¸ð¸" + )) + ); + assert_eq!( + tally_marks(11, None), + HTML(format!( + "ð¸ð¸ð·" + )) + ); 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()); @@ -760,7 +818,7 @@ mod tests { } ), HTML::from( - r#"