diff options
| author | 2018-06-21 12:17:45 +0200 | |
|---|---|---|
| committer | 2018-06-21 12:17:45 +0200 | |
| commit | f05a924c49afb537b624cfe3cbef3a95b13759a2 (patch) | |
| tree | 7c4b5d978c6e13a1a48d15caacc4291f89d8addd | |
| parent | e09cdfaf1f9cca45ed320c3ad97f3502c48ff73d (diff) | |
| download | askama-f05a924c49afb537b624cfe3cbef3a95b13759a2.tar.gz askama-f05a924c49afb537b624cfe3cbef3a95b13759a2.tar.bz2 askama-f05a924c49afb537b624cfe3cbef3a95b13759a2.zip | |
Inline TemplateMeta into TemplateInput
Diffstat (limited to '')
| -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 | 
