3 ms·
I like the syntax to send typed values from the terminal: jb id=42 size:number=42 surname=null data:null => {"id":"42","size":42,"surname":"null","dat
by mg 2y ago
I like the syntax to send typed values from the terminal:
jb id=42 size:number=42 surname=null data:null
=> {"id":"42","size":42,"surname":"null","data":null}
I never had the need to use typed arguments in bash, but if I ever have it, this might be the syntax I'd use.
In fact, I was thinking about such a syntax recently. I am writing a tool which lets you call functions in Python modules from the command line. At first, I thought I need to define the argument types on the command line. But then I decided it is more convenient to use inspection and auto-convert the values to the needed types.
- enriquto 2y ago> I like the syntax to send typed values from the terminal: Incidentally, this syntax shows a notation that is clearly superior to json (at least for non-nested stuff). If all you need is this, you'd be better off by avoiding json altogether. [Rant: if json is so unergonomic that people keep inventing alternatives like this syntax and stuff like "gron" to de-jsonise their lives, maybe using json was always a bad idea, after all... I guess in a decade everybody will look at json with the same disdain as we do XML today.]
- sureIy 2y ago> shows a notation that is clearly superior to json I don’t see that at all? Why is `n:number=1` superior to `{n:1}`? If anything, CLI commands are awful for anything other than strings.
- enriquto 2y agoBut strings are often the most common case (or even, the only case that is needed). And they need much less punctuation. Compare: a=1 b=2 c=3 with {"a"="1", "b"="2", "c"="3"} the json version needs 19 punctuation characters just to define three variables, against the bash version that only has 3. Which one would you prefer to type with your keyboard?
- hnlmorg 2y agoDepends on the shell. The following parses as a number in Murex: %{n:1} https://murex.rocks/parser/create-object.html https://murex.rocks/parser/create-object.html I’m sure you can do similar things in other modern shells too. So the real problem is that people are stuck on the constraints of 1970s command lines.
- h4l 2y agoGlad to hear, this was something I wanted to make reliable, ergonomic and intuitive. I figured a lot of languages use `: type` to declare types. The same using jo would be like this, which I find harder to type and remember: jo -- -s id=42 -n size=42 -s surname=null data=null {"id":"42","size":42,"surname":"","data":null} Notice that surname comes out as the empty string though, I think this must be a bug in jo!