use std::fmt;
#[derive(Clone, Debug, Default)]
pub struct CheckmarkItem {
pub checked: bool,
pub text: String,
}
impl CheckmarkItem {
pub fn new() -> Self {
Self::default()
}
pub fn from(text: impl Into<String>, checked: bool) -> Self {
Self {
text: text.into(),
checked,
}
}
}
impl fmt::Display for CheckmarkItem {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let checkmark = if self.checked { "x" } else { " " };
write!(f, "[{}] {}", checkmark, self.text)
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::MarkdownElement;
#[test]
fn test_display() {
assert_eq!(
CheckmarkItem::from("Eat spaghetti", false).render(),
"[ ] Eat spaghetti"
);
assert_eq!(
CheckmarkItem::from("Eat spaghetti", true).render(),
"[x] Eat spaghetti"
);
}
}