diff options
Diffstat (limited to 'askama_derive/src')
-rw-r--r-- | askama_derive/src/path.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/askama_derive/src/path.rs b/askama_derive/src/path.rs index aac6557..728c7ec 100644 --- a/askama_derive/src/path.rs +++ b/askama_derive/src/path.rs @@ -9,6 +9,30 @@ fn template_dir() -> PathBuf { path } +pub fn find_template_from_path<'a>(path: &str, start_at: Option<&str>) -> PathBuf { + let root = template_dir(); + match start_at { + Some(rel) => { + let mut fs_rel_path = root.clone(); + fs_rel_path.push(rel); + fs_rel_path = fs_rel_path.with_file_name(path); + if fs_rel_path.exists() { + return fs_rel_path.strip_prefix(&root).unwrap().to_owned(); + } + }, + None => {}, + } + + let mut fs_abs_path = root.clone(); + let path = Path::new(path); + fs_abs_path.push(Path::new(path)); + if fs_abs_path.exists() { + path.to_owned() + } else { + panic!(format!("template '{:?}' not found", path.to_str())); + } +} + pub fn get_template_source(tpl_file: &str) -> String { let mut path = template_dir(); path.push(Path::new(tpl_file)); |