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 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("-")
|
||||
*/
|
||||
}
|
||||
|
@ -5,7 +5,7 @@
|
||||
<meta charset="utf-8">
|
||||
<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="author" content="SitePoint">
|
||||
|
||||
|
@ -15,4 +15,17 @@
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{% filter markdown %}
|
||||
### Tasklist
|
||||
|
||||
- [x] Done
|
||||
- [ ] Todo
|
||||
|
||||
| Hello | World |
|
||||
| --- | --- |
|
||||
| Hi | There |
|
||||
| Yo hoho | |
|
||||
{% endfilter %}
|
||||
|
||||
{% endblock %}
|
||||
|
Loading…
Reference in New Issue
Block a user