diff options
Diffstat (limited to 'askama_derive/src')
-rw-r--r-- | askama_derive/src/generator.rs | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/askama_derive/src/generator.rs b/askama_derive/src/generator.rs index 570ab06..d5ddd16 100644 --- a/askama_derive/src/generator.rs +++ b/askama_derive/src/generator.rs @@ -1,4 +1,6 @@ use parser::{self, Cond, Expr, Node, Target, WS}; +use path; +use std::path::PathBuf; use std::str; use std::collections::HashSet; use syn; @@ -471,12 +473,18 @@ pub fn generate(ast: &syn::DeriveInput, path: &str, mut nodes: Vec<Node>) -> Str if base.is_none() { gen.define_trait(path, &block_names); } - let tmpl_path = match base { - Some(Expr::StrLit(base_path)) => { base_path }, - _ => { path }, + let base_path = match base { + Some(Expr::StrLit(user_path)) => { + path::find_template_from_path(user_path, Some(path)) + }, + _ => { + let mut path_buf = PathBuf::new(); + path_buf.push(&path); + path_buf + }, }; let trait_nodes = if base.is_none() { Some(&content[..]) } else { None }; - gen.impl_trait(ast, tmpl_path, &blocks, trait_nodes); + gen.impl_trait(ast, base_path.to_str().unwrap(), &blocks, trait_nodes); gen.impl_template_for_trait(ast, base.is_some()); } else { gen.impl_template(ast, &content); |