///|
pub struct Scenario {
name : String
report : ChemReport
} derive(Debug, Eq)
///|
pub struct ScenarioSet {
name : String
scenarios : Array[Scenario]
} derive(Debug, Eq)
///|
pub fn scenario(name : String, report : ChemReport) -> Scenario {
{ name, report }
}
///|
pub fn scenario_set(name : String) -> ScenarioSet {
{ name, scenarios: [] }
}
///|
pub fn ScenarioSet::add(self : ScenarioSet, value : Scenario) -> ScenarioSet {
self.scenarios.push(value)
self
}
///|
pub fn ScenarioSet::names(self : ScenarioSet) -> Array[String] {
[
for value in self.scenarios => value.name
]
}
///|
pub fn ScenarioSet::best(self : ScenarioSet) -> Scenario? {
for value in self.scenarios {
if value.report.is_publishable() {
break Some(value)
}
} nobreak {
None
}
}
///|
pub fn ScenarioSet::review_required(self : ScenarioSet) -> Array[Scenario] {
[
for value in self.scenarios if !value.report.is_publishable() => value
]
}
///|
pub fn ScenarioSet::to_bundle(self : ScenarioSet) -> ReportBundle {
report_bundle(self.name, [ for value in self.scenarios => value.report ])
}