diff options
author | Dirkjan Ochtman <dirkjan@ochtman.nl> | 2018-06-21 12:17:45 +0200 |
---|---|---|
committer | Dirkjan Ochtman <dirkjan@ochtman.nl> | 2018-06-21 12:17:45 +0200 |
commit | f05a924c49afb537b624cfe3cbef3a95b13759a2 (patch) | |
tree | 7c4b5d978c6e13a1a48d15caacc4291f89d8addd /askama_derive | |
parent | e09cdfaf1f9cca45ed320c3ad97f3502c48ff73d (diff) | |
download | askama-f05a924c49afb537b624cfe3cbef3a95b13759a2.tar.gz askama-f05a924c49afb537b624cfe3cbef3a95b13759a2.tar.bz2 askama-f05a924c49afb537b624cfe3cbef3a95b13759a2.zip |
Inline TemplateMeta into TemplateInput
Diffstat (limited to 'askama_derive')
-rw-r--r-- | askama_derive/src/generator.rs | 2 | ||||
-rw-r--r-- | askama_derive/src/input.rs | 43 | ||||
-rw-r--r-- | askama_derive/src/lib.rs | 6 |
3 files changed, 24 insertions, 27 deletions
diff --git a/askama_derive/src/generator.rs b/askama_derive/src/generator.rs index a6e74bc..bfff265 100644 --- a/askama_derive/src/generator.rs +++ b/askama_derive/src/generator.rs @@ -589,7 +589,7 @@ impl<'a> Generator<'a> { use self::DisplayWrap::*; use super::input::EscapeMode::*; self.write("writer.write_fmt(format_args!(\"{}\", "); - self.write(match (wrapped, &state.input.meta.escaping) { + self.write(match (wrapped, &state.input.escaping) { (Wrapped, &Html) | (Wrapped, &None) | (Unwrapped, &None) => "askama_expr", diff --git a/askama_derive/src/input.rs b/askama_derive/src/input.rs index 62c1072..6c631be 100644 --- a/askama_derive/src/input.rs +++ b/askama_derive/src/input.rs @@ -7,34 +7,15 @@ use syn; pub struct TemplateInput<'a> { pub ast: &'a syn::DeriveInput, - pub meta: TemplateMeta, - pub path: PathBuf, -} - -impl<'a> TemplateInput<'a> { - pub fn new(ast: &'a syn::DeriveInput) -> TemplateInput<'a> { - let meta = TemplateMeta::new(ast); - let path = match meta.source { - Source::Source(_) => match meta.ext { - Some(ref v) => PathBuf::from(format!("{}.{}", ast.ident, v)), - None => PathBuf::new(), - }, - Source::Path(ref s) => path::find_template_from_path(s, None), - }; - TemplateInput { ast, meta, path } - } -} - -// Holds metadata for the template, based on the `template()` attribute. -pub struct TemplateMeta { pub source: Source, pub print: Print, pub escaping: EscapeMode, pub ext: Option<String>, + pub path: PathBuf, } -impl TemplateMeta { - fn new(ast: &syn::DeriveInput) -> TemplateMeta { +impl<'a> TemplateInput<'a> { + pub fn new(ast: &'a syn::DeriveInput) -> TemplateInput<'a> { let attr = ast.attrs .iter() .find(|a| a.interpret_meta().unwrap().name() == "template"); @@ -115,7 +96,23 @@ impl TemplateMeta { } }, }; - TemplateMeta { source, print, escaping, ext } + + let path = match source { + Source::Source(_) => match ext { + Some(ref v) => PathBuf::from(format!("{}.{}", ast.ident, v)), + None => PathBuf::new(), + }, + Source::Path(ref s) => path::find_template_from_path(s, None), + }; + + TemplateInput { + ast, + source, + print, + escaping, + ext, + path, + } } } diff --git a/askama_derive/src/lib.rs b/askama_derive/src/lib.rs index a2b4ace..dcae4d3 100644 --- a/askama_derive/src/lib.rs +++ b/askama_derive/src/lib.rs @@ -34,18 +34,18 @@ pub fn derive_template(input: TokenStream) -> TokenStream { /// value as passed to the `template()` attribute. fn build_template(ast: &syn::DeriveInput) -> String { let input = input::TemplateInput::new(ast); - let source = match input.meta.source { + let source = match input.source { Source::Source(ref s) => s.clone(), Source::Path(_) => path::get_template_source(&input.path) }; let nodes = parser::parse(&source); - if input.meta.print == Print::Ast || input.meta.print == Print::All { + if input.print == Print::Ast || input.print == Print::All { println!("{:?}", nodes); } let code = generator::generate(&input, &nodes); - if input.meta.print == Print::Code || input.meta.print == Print::All { + if input.print == Print::Code || input.print == Print::All { println!("{}", code); } code |