Has anyone implemented the import of YAML data files into Mathematica? I suppose some sort of transformation into a nested list of rules would be the way to do it. Thanks
-
$\begingroup$ There are many YAML parsers for Java, and Mathematica has J/Link. It should be possible to use those two together. $\endgroup$ – Gustavo Delfino Sep 30 '14 at 12:46
I just wrote an importer: https://github.com/zbjornson/MYaml. It's built on SnakeYAML and supports all language-independent types.
Example 2.10 from the spec:
In[1]:= ImportString["---
hr:
- Mark McGwire
# Following node labeled SS
- &SS Sammy Sosa
rbi:
- *SS # Subsequent occurrence
- Ken Griffey", "YAML"]
Out[1]= {
"hr" -> {"Mark McGwire", "Sammy Sosa"},
"rbi" -> {"Sammy Sosa", "Ken Griffey"}
}
More examples in the test suite.
-
2$\begingroup$ For demonstration purposes, can you show how your importer acts on a sample YAML file? $\endgroup$ – J. M.'s ennui♦ Oct 12 '16 at 3:21
-
-
1
-
$\begingroup$ Another importer was written just a few days ago, see at the end of comment thread here: mathematica.stackexchange.com/q/127300/12 $\endgroup$ – Szabolcs Oct 12 '16 at 6:43
-
1$\begingroup$ @JessRiedel You're correct. I'm not on a computer with M right now but can double check in the morning that a fresh install works. What version of M are you using? You can try manually loading this file to register the importer, something like
<< FileNameJoin[{$BaseDirectory, "SystemFiles", "Formats", "YAML", "Import.m"}]
. $\endgroup$ – ZachB Sep 6 '18 at 2:21
I wrote such a cross-platform tool to convert other formats to wolfram format: WolframExchange
Usage
wex in.yml # check file but no output
wex in.yml -t # output only text
wex in.yml -c # output only binary
wex in.yml -ct # output both text and binary
Result
-
1
If you cannot find a YAML importer, consider converting the YAML to JSON and importing that. It'll give you the list of rules you'd expect.