Lossless INI concrete syntax and surgical source editing
moon add shangwuxi/mooninirender(parse(text)) == textmoon run cmd/demo; player preferences
[video]
quality = 'medium' ; retain
vsync=on; player preferences
[video]
quality = 'high' ; retain
vsync=onlet parsed = @moonini.parse("[server]\nport=80\ndebug=true\n")
match parsed.set("server", "port", "8080") {
Err(d) => println(d.format())
Ok(updated) => {
match updated.remove("server", "debug") {
Err(d) => println(d.format())
Ok(removed) => {
let findings = removed.validate_schema([
@moonini.rule("server", "port", @moonini.Integer, required=true),
])
for d in findings { println(d.format()) }
println(removed.render())
}
}
}
}moon fmt --check
moon check --target wasm-gc --deny-warn
moon test --target wasm-gc --deny-warn
moon run cmd/demo --target wasm-gcpub(all) struct Dialect {
allow_colon : Bool
hash_comments : Bool
inline_comments : Bool
case_sensitive : Bool
multiline : Bool
duplicates : DuplicatePolicy
} derive(Eq, Debug)pub struct Document {
// private fields
}fn Document::insert(self : Document, section : String, key : String, value : String) -> Result[Document, Diagnostic]fn Document::remove(self : Document, section : String, key : String) -> Result[Document, Diagnostic]fn Document::remove_at(self : Document, section : String, key : String, occurrence : Int) -> Result[Document, Diagnostic]fn Document::set(self : Document, section : String, key : String, value : String) -> Result[Document, Diagnostic]fn Document::set_at(self : Document, section : String, key : String, occurrence : Int, value : String) -> Result[Document, Diagnostic]fn parse_with_diagnostics(source : String, dialect? : Dialect, limits? : ParseLimits) -> (Document, Array[Diagnostic])Install
Download zipLossless INI concrete syntax and surgical source editing