///|
fn unicode_roman_expansion(character : Char) -> String? {
  match character {
    '\u{2160}' | '\u{2170}' => Some("I")
    '\u{2161}' | '\u{2171}' => Some("II")
    '\u{2162}' | '\u{2172}' => Some("III")
    '\u{2163}' | '\u{2173}' => Some("IV")
    '\u{2164}' | '\u{2174}' => Some("V")
    '\u{2165}' | '\u{2175}' => Some("VI")
    '\u{2166}' | '\u{2176}' => Some("VII")
    '\u{2167}' | '\u{2177}' => Some("VIII")
    '\u{2168}' | '\u{2178}' => Some("IX")
    '\u{2169}' | '\u{2179}' => Some("X")
    '\u{216a}' | '\u{217a}' => Some("XI")
    '\u{216b}' | '\u{217b}' => Some("XII")
    '\u{216c}' | '\u{217c}' => Some("L")
    '\u{216d}' | '\u{217d}' => Some("C")
    '\u{216e}' | '\u{217e}' => Some("D")
    '\u{216f}' | '\u{217f}' => Some("M")
    _ => None
  }
}

///|
fn is_ascii_roman_letter(character : Char) -> Bool {
  match character {
    'I'
    | 'V'
    | 'X'
    | 'L'
    | 'C'
    | 'D'
    | 'M'
    | 'i'
    | 'v'
    | 'x'
    | 'l'
    | 'c'
    | 'd'
    | 'm' => true
    _ => false
  }
}

///|
fn is_lowercase_roman_letter(character : Char) -> Bool {
  match character {
    'i' | 'v' | 'x' | 'l' | 'c' | 'd' | 'm' => true
    _ => false
  }
}

///|
fn is_outer_whitespace(character : Char) -> Bool {
  match character {
    ' ' | '\t' | '\r' | '\n' => true
    _ => false
  }
}