diff options
author | Dirkjan Ochtman <dirkjan@ochtman.nl> | 2016-12-23 09:53:46 +0100 |
---|---|---|
committer | Dirkjan Ochtman <dirkjan@ochtman.nl> | 2016-12-23 09:53:46 +0100 |
commit | df8b05d0a4243b0d0021871e5cab4269d89b1e0c (patch) | |
tree | 99c9ee8d869a8be4f5e396db8b7dbfbcf5a788e4 /askama_codegen/src | |
parent | 062500ef0c4b586dfe0a7e9508f0b11d4fd55703 (diff) | |
download | askama-df8b05d0a4243b0d0021871e5cab4269d89b1e0c.tar.gz askama-df8b05d0a4243b0d0021871e5cab4269d89b1e0c.tar.bz2 askama-df8b05d0a4243b0d0021871e5cab4269d89b1e0c.zip |
Get template from Cargo manifest-relative source
Diffstat (limited to 'askama_codegen/src')
-rw-r--r-- | askama_codegen/src/lib.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/askama_codegen/src/lib.rs b/askama_codegen/src/lib.rs index 4a17b18..b325bae 100644 --- a/askama_codegen/src/lib.rs +++ b/askama_codegen/src/lib.rs @@ -10,6 +10,7 @@ extern crate syn; use proc_macro::TokenStream; use std::fs::File; use std::io::Read; +use std::path::{Path, PathBuf}; fn get_path_from_attrs(attrs: &Vec<syn::Attribute>) -> String { for attr in attrs { @@ -39,7 +40,11 @@ fn get_path_from_attrs(attrs: &Vec<syn::Attribute>) -> String { panic!("template annotation not found"); } -fn get_template_source(path: &str) -> String { +fn get_template_source(tpl_file: &str) -> String { + let root = ::std::env::var("CARGO_MANIFEST_DIR").unwrap(); + let mut path = PathBuf::from(root); + path.push("templates"); + path.push(Path::new(tpl_file)); let mut f = File::open(path).unwrap(); let mut s = String::new(); f.read_to_string(&mut s).unwrap(); @@ -64,7 +69,7 @@ pub fn derive_template(input: TokenStream) -> TokenStream { let expanded = quote! { impl #impl_generics askama::Template for #name #ty_generics #where_clause { fn render(&self) -> String { - src + #src.into() } } }; |