///|
fn show_gate(
  name : String,
  result : @guard.ScanResult,
  gate : @guard.GatePolicy,
) -> Unit {
  let decision = result.decide_with(gate)
  println("\{name}: \{decision.label()}")
  for reason in result.decision_reasons(gate) {
    println("  - \{reason}")
  }
}

///|
fn show_case(name : String, input : String) -> Unit {
  let result = @guard.scan(input)
  println("=== \{name} ===")
  println("safe text: \{result.text()}")
  println("risk: \{result.risk_level()} (score=\{result.risk_score()})")
  show_gate("strict", result, @guard.GatePolicy::strict())
  show_gate("balanced", result, @guard.GatePolicy::balanced())
  show_gate("permissive", result, @guard.GatePolicy::permissive())
  println("")
}

///|
fn main {
  println("MoonAnsi Guard - policy gate comparison")
  println("")
  show_case("plain log", "build completed")
  show_case("styled log", "\u{1b}[32mbuild completed\u{1b}[0m")
  show_case("title spoof", "\u{1b}]2;trusted pipeline\u{07}build completed")
  show_case("desktop notification", "\u{1b}]9;click this message\u{07}done")
  show_case("clipboard write", "\u{1b}]52;c;U0VDUkVU\u{07}done")
  show_case(
    "inline file transfer", "\u{1b}]1337;File=name=eA==:cGF5bG9hZA==\u{07}done",
  )
}