diff options
| author | 2017-08-06 14:42:24 +0200 | |
|---|---|---|
| committer | 2017-08-06 14:44:29 +0200 | |
| commit | 670dbe4aecf4280ef254cafa7d97d1890946b3e5 (patch) | |
| tree | 432722b34f96e436d7e3517c0be9a5531182a863 | |
| parent | e293a1a90c10f33f1fb147cc2fc4023ad43335f6 (diff) | |
| download | askama-670dbe4aecf4280ef254cafa7d97d1890946b3e5.tar.gz askama-670dbe4aecf4280ef254cafa7d97d1890946b3e5.tar.bz2 askama-670dbe4aecf4280ef254cafa7d97d1890946b3e5.zip | |
Add function to find template relative to another template's path
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)); | 
