aboutsummaryrefslogtreecommitdiffstats
path: root/askama_derive
diff options
context:
space:
mode:
authorLibravatar Dirkjan Ochtman <dirkjan@ochtman.nl>2017-08-06 14:56:09 +0200
committerLibravatar Dirkjan Ochtman <dirkjan@ochtman.nl>2017-08-06 14:56:09 +0200
commit077c56c00782ff826e46258f678ef0f163f4e3cb (patch)
tree8bcbb6aa2e835cc742cf19de5e39280b5aa0e326 /askama_derive
parentb9cb5b82e6c87bf0f6037d097476d69f5241bf3a (diff)
downloadaskama-077c56c00782ff826e46258f678ef0f163f4e3cb.tar.gz
askama-077c56c00782ff826e46258f678ef0f163f4e3cb.tar.bz2
askama-077c56c00782ff826e46258f678ef0f163f4e3cb.zip
Use one way of finding templates on the path
Diffstat (limited to 'askama_derive')
-rw-r--r--askama_derive/src/lib.rs3
-rw-r--r--askama_derive/src/parser.rs3
-rw-r--r--askama_derive/src/path.rs6
3 files changed, 7 insertions, 5 deletions
diff --git a/askama_derive/src/lib.rs b/askama_derive/src/lib.rs
index 153e352..5ee5a4c 100644
--- a/askama_derive/src/lib.rs
+++ b/askama_derive/src/lib.rs
@@ -66,7 +66,8 @@ fn get_template_meta(ast: &syn::DeriveInput) -> TemplateMeta {
/// value as passed to the `template()` attribute.
fn build_template(ast: &syn::DeriveInput) -> String {
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);
if meta.print == "ast" || meta.print == "all" {
println!("{:?}", nodes);
diff --git a/askama_derive/src/parser.rs b/askama_derive/src/parser.rs
index ad23cce..767371b 100644
--- a/askama_derive/src/parser.rs
+++ b/askama_derive/src/parser.rs
@@ -1,5 +1,6 @@
use nom::{self, IResult};
use path;
+use std::path::Path;
use std::str;
#[derive(Debug)]
@@ -324,7 +325,7 @@ named!(block_include<Node>, do_parse!(
name: ws!(expr_str_lit) >>
nws: opt!(tag_s!("-")) >>
(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"),
}))
));
diff --git a/askama_derive/src/path.rs b/askama_derive/src/path.rs
index 28b1b17..b51f5f3 100644
--- a/askama_derive/src/path.rs
+++ b/askama_derive/src/path.rs
@@ -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();
- path.push(Path::new(tpl_file));
+ path.push(tpl_path);
let mut f = match File::open(&path) {
Err(_) => {
let msg = format!("unable to open template file '{}'",
@@ -59,7 +59,7 @@ mod tests {
#[test]
fn get_source() {
- assert_eq!(get_template_source("sub/b.html"), "bar");
+ assert_eq!(get_template_source(Path::new("sub/b.html")), "bar");
}
#[test]