3 ms·
Amazing that people use YAML if it does that.
by whatshisface 5y ago
Amazing that people use YAML if it does that.
- fennecfoxen 5y agoThis is why I default to TOML for these sorts of lists of things.
- deleted 5y ago[deleted]
- viraptor 5y agoYou just learn about the edge cases. This applies to everything. There's a number of languages where an empty list/array is truthy and a number where it's falsey. Learn the tool, do some defensive programming (always quote the strings) and you'll be fine. (This issue was recognised and since yaml 1.2 (2009) the spec says "no" is a string, packages like https://yaml.readthedocs.io/ https://yaml.readthedocs.io/ have migrated a while ago)
- Lexarius 5y agoThat's an old YAML 1.1 behavior. It was removed in 1.2 (in 2009), though some implementations (looking at you, pyyaml) are still on 1.1.
- account42 5y agoSo YAML is fine with breaking compatibility in minor version bumps?
- clcaev 5y agoSemver was not yet common practice when 1.2 was released.
- account42 5y agohttps://yaml.org/spec/1.2.0/ https://yaml.org/spec/1.2.0/ says 2009 Not breaking backwards compatibility in a minor version bump of a data format was absolutely common sense in 2009.
- clcaev 5y agosemver.org -- which did an amazing job popularizing this idea -- did not yet have its webpage up in July 2009 (archive.org has it in December)
- BiteCode_dev 5y agoGuess what was not removed? 1 : 1,0 2: 01 3: 1.0 4: 1O 5: 0b1 6: 0x1 7: 0i1 8: hey, 8.0: oh, version: [3.1, "3.1", 3.10, "3.10"] Gives you: { "1": "1,0", "2": 1, "3": 1.0, "4": "1O", "5": 1, "6": 1, "7": "0i1", "8": "oh,", "version": [ 3.1, "3.1", 3.1, "3.10" ] } YAML turns raw literals into strings, except when the string matches a certain format. Then it may turn it into other things, like int or float, and you better know all the rules by heart and be attentive. And not introduce any typo, which of course no human ever does.
- kangalioo 5y agoThat's why yaml is a format for computer and json a format for humans
- BiteCode_dev 5y agoAnd that's also why everybody use JSON to configure CI, and use YAML for REST API.
- smt88 5y agoIn situations where I'm forced to use YAML, I just use strict JSON to avoid YAML insanity.
- 3pt14159 5y agoYep. I used to love Yaml back in the day. But two things burned me. 1. Significant whitespace in a data storage file doesn't scale. Yes, eventually someone wants to dump a giant graph of data and the library breaks. 2. Intermixed context on quoteless strings. Intermixing code and data doesn't work reliably. Every where I see it tried I see it break. If you don't want quotes on your strings, then you have to put something on your keywords. A simple @no would have stopped this and other situations. As an aside, I find it stupid to have multiple names for true, false, and null.