mirror of
https://github.com/askama-rs/askama.git
synced 2025-10-02 07:20:55 +00:00
Use one way of finding templates on the path
This commit is contained in:
parent
b9cb5b82e6
commit
077c56c007
@ -66,7 +66,8 @@ fn get_template_meta(ast: &syn::DeriveInput) -> TemplateMeta {
|
|||||||
/// value as passed to the `template()` attribute.
|
/// value as passed to the `template()` attribute.
|
||||||
fn build_template(ast: &syn::DeriveInput) -> String {
|
fn build_template(ast: &syn::DeriveInput) -> String {
|
||||||
let meta = get_template_meta(ast);
|
let meta = get_template_meta(ast);
|
||||||
let src = path::get_template_source(&meta.path);
|
let path = path::find_template_from_path(&meta.path, None);
|
||||||
|
let src = path::get_template_source(&path);
|
||||||
let nodes = parser::parse(&src);
|
let nodes = parser::parse(&src);
|
||||||
if meta.print == "ast" || meta.print == "all" {
|
if meta.print == "ast" || meta.print == "all" {
|
||||||
println!("{:?}", nodes);
|
println!("{:?}", nodes);
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
use nom::{self, IResult};
|
use nom::{self, IResult};
|
||||||
use path;
|
use path;
|
||||||
|
use std::path::Path;
|
||||||
use std::str;
|
use std::str;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
@ -324,7 +325,7 @@ named!(block_include<Node>, do_parse!(
|
|||||||
name: ws!(expr_str_lit) >>
|
name: ws!(expr_str_lit) >>
|
||||||
nws: opt!(tag_s!("-")) >>
|
nws: opt!(tag_s!("-")) >>
|
||||||
(Node::Include(WS(pws.is_some(), nws.is_some()), match name {
|
(Node::Include(WS(pws.is_some(), nws.is_some()), match name {
|
||||||
Expr::StrLit(s) => path::get_template_source(s),
|
Expr::StrLit(s) => path::get_template_source(Path::new(s)),
|
||||||
_ => panic!("include path must be a string literal"),
|
_ => panic!("include path must be a string literal"),
|
||||||
}))
|
}))
|
||||||
));
|
));
|
||||||
|
@ -33,9 +33,9 @@ pub fn find_template_from_path<'a>(path: &str, start_at: Option<&str>) -> PathBu
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_template_source(tpl_file: &str) -> String {
|
pub fn get_template_source(tpl_path: &Path) -> String {
|
||||||
let mut path = template_dir();
|
let mut path = template_dir();
|
||||||
path.push(Path::new(tpl_file));
|
path.push(tpl_path);
|
||||||
let mut f = match File::open(&path) {
|
let mut f = match File::open(&path) {
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
let msg = format!("unable to open template file '{}'",
|
let msg = format!("unable to open template file '{}'",
|
||||||
@ -59,7 +59,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn get_source() {
|
fn get_source() {
|
||||||
assert_eq!(get_template_source("sub/b.html"), "bar");
|
assert_eq!(get_template_source(Path::new("sub/b.html")), "bar");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user