diff --git a/Justfile b/Justfile new file mode 100644 index 0000000..4a0e2a2 --- /dev/null +++ b/Justfile @@ -0,0 +1,11 @@ +default: + @just hello + +run: + @cargo run main + +bin args='': + @cargo run --bin {{args}} + +hello: + @echo "Hello, world!" diff --git a/src/service/templates.rs b/src/service/templates.rs index aaae101..e5e4299 100644 --- a/src/service/templates.rs +++ b/src/service/templates.rs @@ -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, @@ -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(&self, key: &str, data: D) -> Result { + pub fn render_template( + &self, + key: &str, + data: D, + ) -> Result { 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, 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 { - 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> = 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::>() - .join("-") - */ } diff --git a/templates/base.html b/templates/base.html index ed21f1a..92015a7 100644 --- a/templates/base.html +++ b/templates/base.html @@ -5,7 +5,7 @@ - A Basic HTML5 Template + (Index) diff --git a/templates/howto/index.html b/templates/howto/index.html index 87a4b0a..d3dca9f 100644 --- a/templates/howto/index.html +++ b/templates/howto/index.html @@ -15,4 +15,17 @@ + +{% filter markdown %} +### Tasklist + + - [x] Done + - [ ] Todo + +| Hello | World | +| --- | --- | +| Hi | There | +| Yo hoho | | +{% endfilter %} + {% endblock %}