///|
pub(all) enum Generator {
ScalarV1
CompositeV2
} derive(Eq, @debug.Debug)
///|
pub fn Generator::default() -> Generator {
CompositeV2
}
///|
pub fn Generator::identifier(self : Generator) -> String {
match self {
ScalarV1 => "template-rules-v1"
CompositeV2 => "template-rules-v2"
}
}
///|
fn generators() -> Array[Generator] {
[ScalarV1, CompositeV2]
}
///|
pub fn generator_identifiers() -> Array[String] {
generators().map(generator => generator.identifier())
}
///|
pub fn parse_generator(identifier : String) -> Generator? {
for generator in generators() {
if generator.identifier() == identifier {
return Some(generator)
}
}
None
}
///|
pub extend Generator with Eq::{equal, not_equal}
///|
pub extend Generator with @debug.Debug::{to_repr}