7 ms·
Hello, Is there a commonly-used grammar for "json with comments and trailing commas" or does everyone just try to copy the jsonc from vscode?
by anonymoushn 3y ago
Hello,
Is there a commonly-used grammar for "json with comments and trailing commas" or does everyone just try to copy the jsonc from vscode?
- verdverm 3y agoIt's basically https://json5.org/ https://json5.org/ CUE will happily take your JSON with comments and extra commas, or no commas too (lists still need them), most keys can be unquoted, and it's just a one-liner to get valid json or yaml from it
- IshKebab 3y agoJsonnet does too I believe. I wanted to like Cue but it only works with Go and it doesn't actually let you link the schemas you write from the "document" files, which means no automatic schema checking and no IDE support. Giving up two huge benefits of having a schema in the first place.
- verdverm 3y agoI'm not sure what you mean about the schema / documents thing. Can you elaborate? I've not had problems "linking" (?) data and schemas. I'd guess the lack of documentation is more to blame here. CUE is most often used as a CLI, so no Go is needed, that's really for advanced cases. Being Go, you can compile to SO or WASM, so can use it from pretty much any language. The lack of LSP is being actively worked on right now, I'm hoping they'll have something before the year is out
- IshKebab 3y agoIn an XML document you can specify the XML schema location with `xsi:schemaLocation`. In a JSON document you can specify the JSON Schema location with `$schema`. In a Cue document how do you specify the location of the Cue schema? As far as I can tell you can't. And yes I am aware that the concept of a "document" and a "schema" are basically merged in Cue, but that doesn't mean I don't want to do this. > CUE is most often used as a CLI, so no Go is needed Only because that's the only way you can use it. > Being Go, you can compile to SO or WASM Compiling to a shared library is awkward because you then need to have the Go toolchain installed. WASM might be an option ... I couldn't find out how Go actually works in WASM though given that it needs a GC and threads, and WASM currently has neither. Do they ship their own WASM GC? Either way, it's of no practical use since nobody has actually done that. Look at the languages supported by Jsonnet for comparison: https://jsonnet.org/ref/bindings.html https://jsonnet.org/ref/bindings.html Python, C, Rust (twice), Go (twice), Lua, Node, PHP, Ruby, Haskell. If I'm loading a config file from Python I don't want to have to mess around with `subprocess.run()` to read it. It's a solvable problem... but today, it's a bit of a turn-off.
- verdverm 3y ago> nobody has actually done that CUE, running in the browser: https://cuelang.org/play/?id=#cue@export@cue https://cuelang.org/play/?id=#cue@export@cue I see you are not interested in CUE and the benefits it offers, despite being a young language without all the ecosystem yet We subprocess.run because there are many problems better solved in CUE that make our other code so much simpler. I can't even tell you the 10s of thousands of lines I don't have to write, both python and other config languages require way more verbosity. There are upsides for the downsides to early adoption
- verdverm 3y ago> In a Cue document how do you specify the location of the Cue schema? CUE has proper dependency management* so you specify the schema through dependencies and imports, like we do with most languages we use. JSON and Yaml are notable exceptions to this, and things like what XML and JSONNet do, referring to an http (or remote) location that may or may not serve the same content between requests, make for irreproducibility. * or will soon, there will be an experimental version in the next cue release, and hof has had it for 2+ years now
- IshKebab 3y ago> there will be an experimental version in the next cue release Ah cool, I will check it out later then. Good to know people are working on the issue. > CUE, running in the browser No no. By "that" I mean "provide libraries for other languages that wrap it using WASM". > I see you are not interested in CUE and the benefits it offers That's a bad attitude. Would I have learnt how to use Cue and about these limitations because I wasn't interested? You just don't want to admit that these are valid concerns. Subprocess.run is clearly not the ideal way to interface with a configuration language. You can do it if you have to. But you really shouldn't. Imagine if the only JSON parser in the world was written in OCaml and every program that wanted to read JSON had to run some OCaml program to convert it into another format that they could load. Obviously not a good state of affairs.
- verdverm 3y ago
- cozzyd 3y agohttp://hyperrealm.github.io/libconfig/ http://hyperrealm.github.io/libconfig/ ?
- anonymoushn 3y agoThis looks like an implementation of some totally different format. Additionally, the authors of that format chose not to specify some parts of its grammar.