East asian width

// Auto-generated by unicode-build. Do not edit by hand.
// Regenerate via:
//   make ucd-generate
//
// Source: EastAsianWidth.txt. `EastAsianWidth` is a
// closed union — exhaustive `match` is compile-checked.
// N (Neutral) is the default for unassigned codepoints.

primitive EAWN
  fun code(): String val => "N"
  fun string(): String val => "N"

primitive EAWA
  fun code(): String val => "A"
  fun string(): String val => "A"

primitive EAWF
  fun code(): String val => "F"
  fun string(): String val => "F"

primitive EAWH
  fun code(): String val => "H"
  fun string(): String val => "H"

primitive EAWNa
  fun code(): String val => "Na"
  fun string(): String val => "Na"

primitive EAWW
  fun code(): String val => "W"
  fun string(): String val => "W"

type EastAsianWidth is
  ( EAWN
  | EAWA
  | EAWF
  | EAWH
  | EAWNa
  | EAWW
  )

primitive EastAsianWidths
  fun from_iso(s: String box): (EastAsianWidth | None) =>
    match s
    | "N" => EAWN
    | "A" => EAWA
    | "F" => EAWF
    | "H" => EAWH
    | "Na" => EAWNa
    | "W" => EAWW
    else None
    end

  fun _to_byte(ea: EastAsianWidth): U8 =>
    match ea
    | EAWN => 0
    | EAWA => 1
    | EAWF => 2
    | EAWH => 3
    | EAWNa => 4
    | EAWW => 5
    end

  fun _from_byte(b: U8): EastAsianWidth =>
    match b
    | 0 => EAWN
    | 1 => EAWA
    | 2 => EAWF
    | 3 => EAWH
    | 4 => EAWNa
    | 5 => EAWW
    else EAWN
    end