ralph/template/variables/
substitute.rs1use crate::contracts::Task;
19
20use super::context::TemplateContext;
21
22pub fn substitute_variables(input: &str, context: &TemplateContext) -> String {
30 let mut result = input.to_string();
31
32 if let Some(target) = &context.target {
33 result = result.replace("{{target}}", target);
34 }
35
36 if let Some(module) = &context.module {
37 result = result.replace("{{module}}", module);
38 }
39
40 if let Some(file) = &context.file {
41 result = result.replace("{{file}}", file);
42 }
43
44 if let Some(branch) = &context.branch {
45 result = result.replace("{{branch}}", branch);
46 }
47
48 result
49}
50
51pub fn substitute_variables_in_task(task: &mut Task, context: &TemplateContext) {
53 task.title = substitute_variables(&task.title, context);
54
55 for tag in &mut task.tags {
56 *tag = substitute_variables(tag, context);
57 }
58
59 for scope in &mut task.scope {
60 *scope = substitute_variables(scope, context);
61 }
62
63 for evidence in &mut task.evidence {
64 *evidence = substitute_variables(evidence, context);
65 }
66
67 for plan in &mut task.plan {
68 *plan = substitute_variables(plan, context);
69 }
70
71 for note in &mut task.notes {
72 *note = substitute_variables(note, context);
73 }
74
75 if let Some(request) = &mut task.request {
76 *request = substitute_variables(request, context);
77 }
78}