cleaning up unneeded code; enabling markdown features by default;
This commit is contained in:
parent
f010ee0f47
commit
467f7b4b1d
11
Justfile
Normal file
11
Justfile
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
default:
|
||||||
|
@just hello
|
||||||
|
|
||||||
|
run:
|
||||||
|
@cargo run main
|
||||||
|
|
||||||
|
bin args='':
|
||||||
|
@cargo run --bin {{args}}
|
||||||
|
|
||||||
|
hello:
|
||||||
|
@echo "Hello, world!"
|
@ -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("-")
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
@ -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">
|
||||||
|
|
||||||
|
@ -15,4 +15,17 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{% filter markdown %}
|
||||||
|
### Tasklist
|
||||||
|
|
||||||
|
- [x] Done
|
||||||
|
- [ ] Todo
|
||||||
|
|
||||||
|
| Hello | World |
|
||||||
|
| --- | --- |
|
||||||
|
| Hi | There |
|
||||||
|
| Yo hoho | |
|
||||||
|
{% endfilter %}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
Loading…
Reference in New Issue
Block a user