///|
/// Return true when input is a canonical uppercase or lowercase Roman numeral.
pub fn is_canonical(input : String) -> Bool {
match parse(input) {
Ok(_) => true
Err(_) => false
}
}
///|
/// Normalize valid uppercase or lowercase input to canonical uppercase text.
pub fn canonicalize(input : String) -> Result[String, ParseError] {
match parse(input) {
Err(error) => Err(error)
Ok(value) =>
match format(value) {
Ok(text) => Ok(text)
Err(_) => Err(ParseOutOfRange(value))
}
}
}