///|
fn main {
// 1. Game settings: exact CRLF and comments survive a scalar change.
let game = @ini.parse(
"; player preferences\r\n[video]\r\nquality = 'medium' ; retain\r\nvsync=on\r\n",
)
match game.set("video", "quality", "high") {
Err(e) => abort(e.format())
Ok(next) => {
if next.render() !=
"; player preferences\r\n[video]\r\nquality = 'high' ; retain\r\nvsync=on\r\n" {
abort("lossless game edit mismatch")
}
println(
"GAME: exact-format update verified; vsync=\{next.get_bool("video","vsync").unwrap()}",
)
}
}
// 2. CLI configuration: duplicate diagnostics with explicit repair, then schema.
let cli = @ini.parse("[server]\nport=8080\nport=70000\nenabled=yes")
for d in cli.diagnostics() {
println(d.format())
}
let repaired = cli.remove_at("server", "port", 1).unwrap()
let findings = repaired.validate_schema(
[
@ini.rule(
"server",
"port",
@ini.Integer,
required=true,
minimum=Some(1),
maximum=Some(65535),
),
@ini.rule("server", "enabled", @ini.Boolean, required=true),
],
allow_unknown=false,
)
if !findings.is_empty() {
abort("CLI schema mismatch")
}
println(
"CLI: duplicate repaired; port=\{repaired.get_int("server","port").unwrap()}; schema clean",
)
// 3. Legacy migration: multiline editing plus transactional key replacement.
let legacy = @ini.parse(
"\uFEFF[tool]\r\nscript=\"\"\"step one\r\nstep two\"\"\" ;keep\r\nold=yes",
dialect=@ini.extended(),
)
let migrated = legacy
.apply([
@ini.Set("tool", "script", "prepare\ncompile\ntest"),
@ini.Insert("tool", "enabled", "true"),
@ini.Remove("tool", "old"),
])
.unwrap()
if migrated.get("tool", "script") != Some("prepare\ncompile\ntest") ||
migrated.get("tool", "old") != None {
abort("migration mismatch")
}
println(
"MIGRATION: BOM retained=\{migrated.render().has_prefix("\uFEFF")}; multiline and atomic edits verified",
)
println("MoonINI acceptance: 3 scenarios passed")
}