diff options
author | mash <mashedcode@users.noreply.github.com> | 2018-06-29 13:16:56 +0000 |
---|---|---|
committer | Dirkjan Ochtman <dirkjan@ochtman.nl> | 2018-07-02 09:25:27 +0200 |
commit | e604deb4dfddb9ad9e325b488c18dd7a395846e5 (patch) | |
tree | 55077888641fc30b88513274d783563308285e43 /askama_derive/src/input.rs | |
parent | 28018e89222d0d02dbb9f662cbe8a9c190b0a9de (diff) | |
download | askama-e604deb4dfddb9ad9e325b488c18dd7a395846e5.tar.gz askama-e604deb4dfddb9ad9e325b488c18dd7a395846e5.tar.bz2 askama-e604deb4dfddb9ad9e325b488c18dd7a395846e5.zip |
Determine path during source attribute checks
Diffstat (limited to 'askama_derive/src/input.rs')
-rw-r--r-- | askama_derive/src/input.rs | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/askama_derive/src/input.rs b/askama_derive/src/input.rs index be9446f..cfc8855 100644 --- a/askama_derive/src/input.rs +++ b/askama_derive/src/input.rs @@ -85,15 +85,18 @@ impl<'a> TemplateInput<'a> { } let source = source.expect("template path or source not found in attributes"); - match (&source, ext.is_some()) { + let path = match (&source, ext.is_some()) { (&Source::Path(_), true) => { panic!("'ext' attribute cannot be used with 'path' attribute") } (&Source::Source(_), false) => { panic!("must include 'ext' attribute when using 'source' attribute") } - _ => {} - } + (&Source::Path(ref path), false) => path::find_template_from_path(path, None), + (&Source::Source(_), true) => { + PathBuf::from(format!("{}.{}", ast.ident, ext.as_ref().unwrap())) + } + }; let escaping = match escaping { Some(m) => m, @@ -125,14 +128,6 @@ impl<'a> TemplateInput<'a> { _ => panic!("derive(Template) only works for struct items"), }.next(); - 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, |