diff options
author | Daniel Silverstone <dsilvers@digital-scurf.org> | 2021-08-07 15:37:51 +0100 |
---|---|---|
committer | Daniel Silverstone <dsilvers@digital-scurf.org> | 2021-09-07 17:32:16 +0100 |
commit | b443c533f9e5a0bdbf8b380a8d7d59e46c28858b (patch) | |
tree | fe01f78e107ca092a3d13875ddff704c6ec2afce /src/codegen.rs | |
parent | 1afd692bacf6c95d5897d4af74f6f2d4f8b91c1f (diff) | |
download | subplot-b443c533f9e5a0bdbf8b380a8d7d59e46c28858b.tar.gz |
chore: Unwind global template name
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
Diffstat (limited to 'src/codegen.rs')
-rw-r--r-- | src/codegen.rs | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/codegen.rs b/src/codegen.rs index d27a4d8..f48f049 100644 --- a/src/codegen.rs +++ b/src/codegen.rs @@ -27,14 +27,17 @@ pub fn generate_test_program( doc: &mut Document, spec: &TemplateSpec, filename: &Path, + template: &str, ) -> Result<(), SubplotError> { - let context = context(doc)?; - let code = tera(spec)?.render("template", &context).expect("render"); + let context = context(doc, template)?; + let code = tera(spec, template)? + .render("template", &context) + .expect("render"); write(filename, &code)?; Ok(()) } -fn context(doc: &mut Document) -> Result<Context, SubplotError> { +fn context(doc: &mut Document, template: &str) -> Result<Context, SubplotError> { let mut context = Context::new(); context.insert("scenarios", &doc.matched_scenarios()?); context.insert("files", doc.files()); @@ -42,7 +45,7 @@ fn context(doc: &mut Document) -> Result<Context, SubplotError> { let funcs_filenames = doc.meta().functions_filenames(); let mut funcs = vec![]; for filename in funcs_filenames { - let content = resource::read_as_string(filename) + let content = resource::read_as_string(filename, Some(template)) .map_err(|err| SubplotError::FunctionsFileNotFound(filename.into(), err))?; funcs.push(Func::new(filename, content)); } @@ -51,7 +54,7 @@ fn context(doc: &mut Document) -> Result<Context, SubplotError> { Ok(context) } -fn tera(tmplspec: &TemplateSpec) -> Result<Tera, SubplotError> { +fn tera(tmplspec: &TemplateSpec, templatename: &str) -> Result<Tera, SubplotError> { // Tera insists on a glob, but we want to load a specific template // only, so we use a glob that doesn't match anything. let mut tera = Tera::new("/..IGNORE-THIS../..SUBPLOT-TERA-NOT-EXIST../*").expect("new"); @@ -61,12 +64,12 @@ fn tera(tmplspec: &TemplateSpec) -> Result<Tera, SubplotError> { let dirname = tmplspec.template_filename().parent().unwrap(); for helper in tmplspec.helpers() { let helper_path = dirname.join(helper); - let helper_content = resource::read_as_string(helper_path)?; + let helper_content = resource::read_as_string(helper_path, Some(templatename))?; let helper_name = helper.display().to_string(); tera.add_raw_template(&helper_name, &helper_content) .map_err(|err| SubplotError::TemplateError(helper_name.to_string(), err))?; } - let template = resource::read_as_string(tmplspec.template_filename())?; + let template = resource::read_as_string(tmplspec.template_filename(), Some(templatename))?; tera.add_raw_template("template", &template) .map_err(|err| { SubplotError::TemplateError(tmplspec.template_filename().display().to_string(), err) |