diff options
Diffstat (limited to '')
| -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)); | 
