///|
fn main {
  let scan_config : @roman.ScanConfig = {
    parse_config: @roman.compatibility_parse_config(),
    retain_rejected: true,
    include_single_symbol: false,
    max_candidate_length: 32,
  }
  match
    @roman.scan_roman_text(
      "Release XIV includes \u{2163} checks and IIX.", scan_config,
    ) {
    Ok(report) => {
      println(report.matches.length())
      println(report.rejections.length())
      for matched in report.matches {
        println(matched.source_text)
        println(matched.report.value)
      }
    }
    Err(_) => println("scan failed")
  }
  let items : Array[@roman.RomanBatchItem] = [
    { id: "modern", input: "XIV", config: @roman.strict_parse_config() },
    { id: "bad", input: "IIX", config: @roman.strict_parse_config() },
  ]
  match @roman.process_roman_batch(items) {
    Ok(report) => {
      println(report.statistics.succeeded)
      println(report.statistics.failed)
    }
    Err(_) => println("batch failed")
  }
}