cleaning up unneeded code; enabling markdown features by default;

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

11
Justfile Normal file
View File

@ -0,0 +1,11 @@
default:
@just hello
run:
@cargo run main
bin args='':
@cargo run --bin {{args}}
hello:
@echo "Hello, world!"

View File

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

View File

@ -5,7 +5,7 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>A Basic HTML5 Template</title> <title>(Index)</title>
<meta name="description" content="A simple HTML5 Template for new projects."> <meta name="description" content="A simple HTML5 Template for new projects.">
<meta name="author" content="SitePoint"> <meta name="author" content="SitePoint">

View File

@ -15,4 +15,17 @@
</div> </div>
</div> </div>
{% filter markdown %}
### Tasklist
- [x] Done
- [ ] Todo
| Hello | World |
| --- | --- |
| Hi | There |
| Yo hoho | |
{% endfilter %}
{% endblock %} {% endblock %}