From f9f4f57221e4488f3ecf26752e6c53d60167a5af Mon Sep 17 00:00:00 2001 From: Dirkjan Ochtman Date: Wed, 11 Jul 2018 22:38:07 +0100 Subject: Move get_template_source() into askama_derive --- askama/src/lib.rs | 2 -- askama_derive/src/generator.rs | 6 +++--- askama_derive/src/lib.rs | 36 ++++++++++++++++++++++++++++++++---- askama_derive/templates/b.html | 1 + askama_shared/src/lib.rs | 1 - askama_shared/src/path.rs | 29 ----------------------------- 6 files changed, 36 insertions(+), 39 deletions(-) create mode 100644 askama_derive/templates/b.html delete mode 100644 askama_shared/src/path.rs diff --git a/askama/src/lib.rs b/askama/src/lib.rs index d55baef..c31f341 100644 --- a/askama/src/lib.rs +++ b/askama/src/lib.rs @@ -317,8 +317,6 @@ extern crate askama_derive; extern crate askama_shared as shared; -use shared::path; - use std::fs::{self, DirEntry}; use std::io; use std::path::Path; diff --git a/askama_derive/src/generator.rs b/askama_derive/src/generator.rs index 7bc7b41..15a2e61 100644 --- a/askama_derive/src/generator.rs +++ b/askama_derive/src/generator.rs @@ -1,7 +1,7 @@ -use super::Context; +use super::{get_template_source, Context}; use input::TemplateInput; use parser::{self, Cond, Expr, MatchParameter, MatchVariant, Node, Target, When, WS}; -use shared::{filters, path}; +use shared::filters; use proc_macro2::Span; @@ -494,7 +494,7 @@ impl<'a> Generator<'a> { let path = self.input .config .find_template(path, Some(&self.input.path)); - let src = path::get_template_source(&path); + let src = get_template_source(&path); let nodes = parser::parse(&src); let nested = { let mut gen = self.child(); diff --git a/askama_derive/src/lib.rs b/askama_derive/src/lib.rs index c36da67..1fd7570 100644 --- a/askama_derive/src/lib.rs +++ b/askama_derive/src/lib.rs @@ -14,9 +14,10 @@ mod parser; use input::{Print, Source, TemplateInput}; use parser::{Expr, Macro, Node}; use proc_macro::TokenStream; -use shared::{path, Config}; +use shared::Config; use std::collections::HashMap; +use std::fs; use std::path::{Path, PathBuf}; #[proc_macro_derive(Template, attributes(template))] @@ -36,7 +37,7 @@ fn build_template(ast: &syn::DeriveInput) -> String { let input = TemplateInput::new(ast); let source: String = match input.source { Source::Source(ref s) => s.clone(), - Source::Path(_) => path::get_template_source(&input.path), + Source::Path(_) => get_template_source(&input.path), }; let mut sources = HashMap::new(); @@ -70,12 +71,12 @@ fn find_used_templates(input: &TemplateInput, map: &mut HashMap match n { Node::Extends(Expr::StrLit(extends)) => { let extends = input.config.find_template(extends, Some(&path)); - let source = path::get_template_source(&extends); + let source = get_template_source(&extends); check.push((extends, source)); } Node::Import(_, import, _) => { let import = input.config.find_template(import, Some(&path)); - let source = path::get_template_source(&import); + let source = get_template_source(&import); check.push((import, source)); } _ => {} @@ -158,3 +159,30 @@ impl<'a> Context<'a> { } } } + +fn get_template_source(tpl_path: &Path) -> String { + match fs::read_to_string(tpl_path) { + Err(_) => panic!( + "unable to open template file '{}'", + tpl_path.to_str().unwrap() + ), + Ok(mut source) => { + if source.ends_with('\n') { + let _ = source.pop(); + } + source + } + } +} + +#[cfg(test)] +mod tests { + use super::get_template_source; + use Config; + + #[test] + fn get_source() { + let path = Config::new().find_template("b.html", None); + assert_eq!(get_template_source(&path), "bar"); + } +} diff --git a/askama_derive/templates/b.html b/askama_derive/templates/b.html new file mode 100644 index 0000000..5716ca5 --- /dev/null +++ b/askama_derive/templates/b.html @@ -0,0 +1 @@ +bar diff --git a/askama_shared/src/lib.rs b/askama_shared/src/lib.rs index 08b243d..312057c 100644 --- a/askama_shared/src/lib.rs +++ b/askama_shared/src/lib.rs @@ -17,7 +17,6 @@ mod escaping; pub use error::{Error, Result}; pub use escaping::MarkupDisplay; pub mod filters; -pub mod path; pub struct Config { pub dirs: Vec, diff --git a/askama_shared/src/path.rs b/askama_shared/src/path.rs deleted file mode 100644 index 16102b8..0000000 --- a/askama_shared/src/path.rs +++ /dev/null @@ -1,29 +0,0 @@ -use std::fs; -use std::path::Path; - -pub fn get_template_source(tpl_path: &Path) -> String { - match fs::read_to_string(tpl_path) { - Err(_) => panic!( - "unable to open template file '{}'", - tpl_path.to_str().unwrap() - ), - Ok(mut source) => { - if source.ends_with('\n') { - let _ = source.pop(); - } - source - } - } -} - -#[cfg(test)] -mod tests { - use super::get_template_source; - use Config; - - #[test] - fn get_source() { - let path = Config::new().find_template("sub/b.html", None); - assert_eq!(get_template_source(&path), "bar"); - } -} -- cgit