Often find myself getting frustrated editing yaml, and it seems to be used everywhere for some reason I cannot fathom
I have an idea to write an editor plugin that will, when opening a yaml file, convert it to json (or some other less painful configuration language), then convert back on save. I don’t know enough about yaml syntax to know if that’s possible or if there’s some quirk that makes them not completely cross compatible
Or alternatively if it exists a better CLI tool for editing yaml than just a normal text editor because I’m getting sick of pasting in a block of yaml and then having to fix the 8 indentation errors that somehow spawn from that
What text editor are you using? In theory most should detect a yaml file and adjust their indentation behaviour appropriately. I edit yaml in VSCode and Kate and it’s never been a problem.
I use nvim for it, it works but I’d rather not have to deal with indentation in the first place
Well in that case, I have good news. All valid JSON is also valid yaml. It’s a superset by definition. So if you really hate yaml so much you can just write your yaml files as JSON and the parser should handle it fine. Just be aware that yaml does some more agressive typecasting when quotes are omitted, so you may need to figure out which value is actually being used when converting.
Seriously? Chatgpt told me that once and I thought it was just hallucinating
Problem is it’s for configuration of other services I didn’t write, I would just use JSON in the first place if I were defining the schema
You should try looking up the language spec rather than hoping a text generator will generate truthful results. What’s even the point of asking for answers if you don’t trust that the thing you’re asking won’t just bullshit you?
Can usually tell when it’s obviously bullshitting me and verify it if it’s not. You can often get it to correct itself if you call it out
(This was the first time I’ve seen it incorrectly “corrected” itsself)
I think I did a quick search but it seemed so strange to me I just wrote it off straight away
I could see some problems when working with yaml anchors, otherwise the conversion should work fine. But yeah, using a good editor should fix most problems and would be much easier
What kind of problems? I’m unfamiliar with anchors in yaml
They are basically constants where you can define reoccurring sections once and reference them multiple times throughout the file. A processor will then resolve these. As gar as I know, there is no comparable concept in JSON so they could get lost in translation
YAML to JSON is probably doable, JSON back to YAML not so much.
There are multiple ways to mark multiline strings in YAML. Then there are anchors, like bionicjoey mentioned. Also comments, YAML has them. You’d have to have some way to retain the extra information, if you want to make the full round trip.
Here’s an example:
def-db: &def-db # here be dragons login: admin passwd: nimda prod: db: *def-db desc: | I'm a teapot short and stout dev: db: <<: *def-db passwd: pass desc: "I'm a teapot\nshort and stout\n"
converted to JSON looks like this
{ "def-db": { "login": "admin", "passwd": "nimda" }, "prod": { "db": { "login": "admin", "passwd": "nimda" }, "desc": "I'm a teapot\nshort and stout\n" }, "dev": { "db": { "login": "admin", "passwd": "pass" }, "desc": "I'm a teapot\nshort and stout\n" } }
All JSON is valid YAML, so after you’ve converted the file to JSON, just… save it with a YAML file extension and call it a day…?