crate::ix!();
pub struct MeterBuilder {
standard: Option<LyricalMeterBuilder>,
other: Option<OtherMeter>,
}
impl MeterBuilder {
pub fn standard() -> LyricalMeterBuilder {
LyricalMeterBuilder::default()
}
pub fn other(other_meter: OtherMeter) -> Self {
MeterBuilder {
standard: None,
other: Some(other_meter),
}
}
pub fn build(self) -> Meter {
if let Some(other_meter) = self.other {
Meter::Other(other_meter)
} else if let Some(lyrical_meter_builder) = self.standard {
Meter::Standard(lyrical_meter_builder.build())
} else {
Meter::Standard(LyricalMeter::default())
}
}
}
impl Default for MeterBuilder {
fn default() -> Self {
MeterBuilder {
standard: Some(LyricalMeterBuilder::default()),
other: None,
}
}
}