dantalian 0.4.3

A nfo file generator for your anime. Source from https://bangumi.tv/.
Documentation
use super::{
    nfo::{Movie, MOVIE_TEMPLATE},
    Episode, TVShow, EPISODE_TEMPLATE, TVSHOW_TEMPLATE,
};
use crate::debug;
use anyhow::{Context, Result};
use tinytemplate::TinyTemplate;

pub struct Generator<'a> {
    tt: TinyTemplate<'a>,
}

impl<'a> Generator<'a> {
    #[allow(clippy::new_without_default)]
    pub fn new() -> Generator<'a> {
        let mut g = Generator {
            tt: TinyTemplate::new(),
        };
        g.tt.add_template("movie", MOVIE_TEMPLATE).unwrap();
        g.tt.add_template("tvshow", TVSHOW_TEMPLATE).unwrap();
        g.tt.add_template("episode", EPISODE_TEMPLATE).unwrap();
        g
    }

    pub fn gen_movie_nfo(&self, movie: &Movie) -> Result<String> {
        let rendered = self
            .tt
            .render("movie", movie)
            .with_context(|| "render movie")?;
        debug!("generated movie nfo file:\n{}", &rendered);
        Ok(rendered)
    }

    pub fn gen_tvshow_nfo(&self, show: &TVShow) -> Result<String> {
        let rendered = self
            .tt
            .render("tvshow", show)
            .with_context(|| "render tvshow")?;
        debug!("generated tvshow nfo file:\n{}", &rendered);
        Ok(rendered)
    }

    pub fn gen_episode_nfo(&self, episode: &Episode) -> Result<String> {
        let rendered = self
            .tt
            .render("episode", episode)
            .with_context(|| "render episode")?;
        debug!("generated episode nfo file:\n{}", &rendered);
        Ok(rendered)
    }
}