cleaning up unneeded code; enabling markdown features by default;

This commit is contained in:
2023-10-05 01:00:07 +02:00
parent f010ee0f47
commit 467f7b4b1d
4 changed files with 39 additions and 26 deletions

View File

@@ -1,12 +1,10 @@
use crate::service::error::Error;
use axum::response::Html;
use minijinja::{path_loader, Environment, Template, Value};
use minijinja::{path_loader, Environment, Value};
use minijinja_autoreload::AutoReloader;
use pulldown_cmark::{Event, Tag};
use pulldown_cmark::Event;
use std::sync::Arc;
pub struct RenderTarget {}
#[derive(Clone)]
pub struct Templates {
pub reloader: Arc<minijinja_autoreload::AutoReloader>,
@@ -17,13 +15,9 @@ impl Templates {
let reloader = AutoReloader::new(move |notifier| {
let mut environment = Environment::new();
let template_path = "templates";
//environment.set_loader();
environment.set_loader(path_loader(&template_path));
environment.add_filter("markdown", markdown);
notifier.watch_path(template_path, true);
//environment.set_source(Source::from_path(template_path));
Ok(environment)
});
Ok(Self {
@@ -31,11 +25,14 @@ impl Templates {
})
}
pub fn render<D: serde::Serialize>(&self, key: &str, data: D) -> Result<String, Error> {
pub fn render_template<D: serde::Serialize>(
&self,
key: &str,
data: D,
) -> Result<String, Error> {
let env = self.reloader.acquire_env()?;
let template = env.get_template(key)?;
let rendered = template.render(&data)?;
Ok(rendered)
}
@@ -44,28 +41,20 @@ impl Templates {
key: &str,
data: D,
) -> Result<Html<String>, Error> {
let result = self.render(key, data)?;
let result = self.render_template(key, data)?;
Ok(Html(result))
}
pub fn render_indirect(&self, key: &str) -> Result<RenderTarget, Error> {
let env = self.reloader.acquire_env()?;
Ok(RenderTarget {})
}
}
fn markdown(value: String) -> Value {
let parser = pulldown_cmark::Parser::new(&value);
let mut options = pulldown_cmark::Options::empty();
options.insert(pulldown_cmark::Options::ENABLE_STRIKETHROUGH);
options.insert(pulldown_cmark::Options::ENABLE_TABLES);
options.insert(pulldown_cmark::Options::ENABLE_TASKLISTS);
options.insert(pulldown_cmark::Options::ENABLE_SMART_PUNCTUATION);
let parser = pulldown_cmark::Parser::new_ext(&value, options);
let parser: Box<dyn Iterator<Item = Event>> = Box::new(parser.into_iter());
let mut html = String::new();
pulldown_cmark::html::push_html(&mut html, parser);
Value::from_safe_string(html)
/*
value
.to_lowercase()
.split_whitespace()
.collect::<Vec<_>>()
.join("-")
*/
}