RSConf
RSConf is a data format I’ve created that sits somewhere in-between JSON and HJSON. It has a few more features than JSON that make it nicer for use in config files, such as comments, not needing commas, and unquoted strings. But it it’s less strict and has fewer features than HJSOIN to keep parsing simple, and writing easier since there’s fewer things to remember.
RSConf was created to both fill a niche, and scratch an itch, for an easy-to-use config format that doubles as a data serialization format. JSON is nice and (usually) easy to visually parse as a human, but is a bit too strict with its syntax, and doesn’t have comments. YAML is nice, but has far too many bells and whistles, leading to all sorts of strange edge cases, and a large space for possible security problems. TOML is ugly, and I just don’t like it. HJSON is nice, but has just a few too many unnecessary features for my liking, and is a bit too flexible. Thus, RSConf was born to fill the hole left by these other formats.
The RSConf Specifications are in my CL-SDM library, as is the reference parser and generator.
As time goes on, RSConf will be the format I use for config file in all my software.
;;;; ;;;; Example Document ;;;; some-object: { values: [ 1, 2, 3] ;; Recommended syntax for short arrays ;; Better syntax for larger arrays, or ones with long values. ;; Strings are always quoted. values-2: [ "foo" "bar" "baz" ] name: "test" sub-obj: { id: 1, ;; Comma here is optional enabled: false ;; or "true" something-else: nil ;; Null values are represented with "nil" } }