YAML
YAML is a human-readable data-serialization language. It is commonly used for configuration files and in applications storing or transmitting data. YAML
The yaml document from hell
- As it turns out, numbers from 0 to 59 separated by colons are sexagesimal (base 60) number literals. This arcane feature was present in yaml 1.1 but silently removed from yaml 1.2, so the list element will parse as
1342
or"22:22"
depending on which version your parser uses - Yaml allows you to create an anchor by adding an
&
and a name in front of a value, and then you can later reference that value with an alias: a*
followed by the name. In this case, no anchors are defined, so the handles are invalid - This pitfall is so infamous that it became known as "the Norway problem
- What is that
false
doing there? The literalsoff
,no
, andn
, in various capitalizations (but not any capitalization!), are allfalse
in yaml 1.1, whileon
,yes
, andy
are true - Combined with the previous feature of interpreting
on
as a boolean, this leads to a dictionary withtrue
as one of the keys. It depends on the language and how that maps to JSON, if at all. In Python, it becomes the string"True"
. The keyon
is expected in the wild because it is used in GitHub Actions. I would be interested to know whether the GitHub Actions parser looks at"on"
ortrue
under the hood