libfyaml
libfyaml copied to clipboard
Preferred defaults for `fy-tool -m dejson`
First off dejson is a bad name for this.
How about yamlfmt, yfmt,, tidy or something?
JSON has nothing to do with this.
So here are some changes to the default emitter format I'd like to see...
$ echo $'foo:\n- bar' | fy-tool -m yamlfmt -
foo:
- bar
$ echo $'foo:\n- "bar\\nbaz\\nboom\\n"' | fy-tool -m yamlfmt -
---
foo:
- |
bar
baz
boom
Do those for starters.
In general @perlpunk's yamlpp-load-dump --preserve 0 does a good job for this kind of formatting.
You can install with cpanm YAML::PP.
Here's some general heuristics:
- Use plain if possible
- For multiline with printable chars, use literal.
- For things that need quoting but don't need any escapes, use single quotes
- For thing that need escapes use double quotes
- I can't think of a situation where you can chose folded as the best choice, but maybe there is.
fy-tool already seems to fold plain scalars. yaml-pp-load doesn't. I think that folding is nice, so keep that.
$ echo $'foo:\n- " x "' | fy-tool -m dejson -
foo:
- " x "
I'd like to see single quotes not double quotes. also you don't seem to fold quoted scalars like you do for plain. That's a shame. :)
Also yamlpp-load-dump --preserve 0 emits --- at start. This is preferred to state (not too loudly) that this is YAML.
Also start top level scalars on the --- line
$ echo $'foo\nbar' | yamlpp-load-dump --preserve 0
--- foo bar
Addressed most of these with the 21747066c6684f3b09c60c72fe5dda537706dc82 and de49581ad0cf52c103f9c21f0bffe7e76ff03d05 commits.
fy-tool now accepts -mpretty (or -myamlfmt as an alias).
I'm not so gung-ho to make single quotes as the default for scalars that can't be plain. I'm an old C person and when I see single quotes my lizard brain goes to char mode...
Closing since this is be OK now.