lyrical_meter/
meter_builder.rs1crate::ix!();
2
3pub struct MeterBuilder {
5 standard: Option<LyricalMeterBuilder>,
6 other: Option<OtherMeter>,
7}
8
9impl MeterBuilder {
10
11 pub fn standard() -> LyricalMeterBuilder {
13 LyricalMeterBuilder::default()
14 }
15
16 pub fn other(other_meter: OtherMeter) -> Self {
18 MeterBuilder {
19 standard: None,
20 other: Some(other_meter),
21 }
22 }
23
24 pub fn build(self) -> Meter {
26 if let Some(other_meter) = self.other {
27 Meter::Other(other_meter)
28 } else if let Some(lyrical_meter_builder) = self.standard {
29 Meter::Standard(lyrical_meter_builder.build())
30 } else {
31 Meter::Standard(LyricalMeter::default())
33 }
34 }
35}
36
37impl Default for MeterBuilder {
38 fn default() -> Self {
39 MeterBuilder {
40 standard: Some(LyricalMeterBuilder::default()),
41 other: None,
42 }
43 }
44}