use crate::contracts::Task;
use super::context::TemplateContext;
pub fn substitute_variables(input: &str, context: &TemplateContext) -> String {
let mut result = input.to_string();
if let Some(target) = &context.target {
result = result.replace("{{target}}", target);
}
if let Some(module) = &context.module {
result = result.replace("{{module}}", module);
}
if let Some(file) = &context.file {
result = result.replace("{{file}}", file);
}
if let Some(branch) = &context.branch {
result = result.replace("{{branch}}", branch);
}
result
}
pub fn substitute_variables_in_task(task: &mut Task, context: &TemplateContext) {
task.title = substitute_variables(&task.title, context);
for tag in &mut task.tags {
*tag = substitute_variables(tag, context);
}
for scope in &mut task.scope {
*scope = substitute_variables(scope, context);
}
for evidence in &mut task.evidence {
*evidence = substitute_variables(evidence, context);
}
for plan in &mut task.plan {
*plan = substitute_variables(plan, context);
}
for note in &mut task.notes {
*note = substitute_variables(note, context);
}
if let Some(request) = &mut task.request {
*request = substitute_variables(request, context);
}
}