scraps 2.4.0

Scraps is a portable CLI knowledge hub for managing interconnected Markdown documentation with Wiki-link notation.
use itertools::Itertools;

use scraps_libs::model::{file::ScrapFileStem, scrap::Scrap};

#[derive(serde::Serialize, Clone, PartialEq, Debug)]
struct SerializeLinkScrap {
    ctx: Option<String>,
    title: String,
    html_file_name: String,
}

impl SerializeLinkScrap {
    fn new(scrap: &Scrap) -> SerializeLinkScrap {
        let html_file_name = format!("{}.html", ScrapFileStem::from(scrap.self_key().clone()));
        SerializeLinkScrap {
            ctx: scrap.ctx().as_ref().map(|c| c.to_string()),
            title: scrap.title().to_string(),
            html_file_name,
        }
    }
}

#[derive(serde::Serialize, PartialEq, Debug)]
pub struct LinkScrapsTera(Vec<SerializeLinkScrap>);

impl LinkScrapsTera {
    pub fn new(scraps: &[Scrap]) -> LinkScrapsTera {
        let serialize_scraps = scraps.iter().map(SerializeLinkScrap::new).collect_vec();

        LinkScrapsTera(serialize_scraps)
    }
}