use super::*;
#[derive(Default)]
pub struct SwitchTaskDefinitionBuilder {
task: SwitchTaskDefinition,
}
impl SwitchTaskDefinitionBuilder {
pub fn new() -> Self {
Self::default()
}
pub fn case_<F>(&mut self, name: &str, setup: F) -> &mut Self
where
F: FnOnce(&mut SwitchCaseDefinitionBuilder),
{
let mut builder = SwitchCaseDefinitionBuilder::new();
setup(&mut builder);
let case_def = builder.build();
self.task.switch.add(name.to_string(), case_def);
self
}
}
impl_task_definition_builder_base!(SwitchTaskDefinitionBuilder, task, |v| {
TaskDefinition::Switch(v)
});
pub struct SwitchCaseDefinitionBuilder {
case_def: SwitchCaseDefinition,
}
impl SwitchCaseDefinitionBuilder {
pub fn new() -> Self {
Self {
case_def: SwitchCaseDefinition::default(),
}
}
pub fn when(&mut self, when: &str) -> &mut Self {
self.case_def.when = Some(when.to_string());
self
}
pub fn then(&mut self, then: &str) -> &mut Self {
self.case_def.then = Some(then.to_string());
self
}
pub fn build(self) -> SwitchCaseDefinition {
self.case_def
}
}
impl Default for SwitchCaseDefinitionBuilder {
fn default() -> Self {
Self::new()
}
}