///|
/// Parses a List field value (RFC 9651 ยง3.1), including inner lists.
///
/// Run: `moon run examples/parse_list`
fn main {
  let input = "(\"foo\" \"bar\");lvl=5, sugar, tea"
  match @lib.parse_list(input) {
    Err(e) => println("parse failed: \{e.to_string()}")
    Ok(list) => {
      println("parsed list from: \{input}")
      println("  member count: \{list.len()}")
      for i in 0.. ()
          Some(m) =>
            match m {
              @lib.ItemMember(item) => {
                let s = match item.bare {
                  @lib.Token(t) => "Token(\{t})"
                  @lib.StringItem(s) => "String(\{s})"
                  other => @debug.to_string(other)
                }
                println("  [\{i}] item: \{s}")
              }
              @lib.InnerListMember(il) =>
                println(
                  "  [\{i}] inner list with \{il.len()} item(s), \{il.parameters.len()} parameter(s)",
                )
            }
        }
      }
      match @lib.serialize_list(list) {
        Err(e) => println("serialize failed: \{e.to_string()}")
        Ok(sf) => println("canonical wire: \{sf.to_string()}")
      }
    }
  }
}