///|
/// Demonstrates canonicalization: parse-then-serialize normalizes leading
/// zeros, trailing zeros, negative zero, explicit `=?1`, and whitespace.
///
/// Run: `moon run examples/canonicalize`
fn main {
let inputs = [
("0002", @lib.Item),
("-01", @lib.Item),
("4.500", @lib.Item),
("5; a=?1", @lib.Item),
("1, 42", @lib.List),
("a, b;c=d", @lib.Dictionary),
("a=1, a=2", @lib.Dictionary),
]
for pair in inputs {
let (input, ft) = pair
match @lib.canonicalize(input, ft) {
Err(e) => println("\{input} -> ERROR: \{e.to_string()}")
Ok(sf) => {
let out = if sf.is_omitted() { "(omitted)" } else { sf.to_string() }
println("\{input} -> \{out}")
}
}
}
}