nodeのYAMLモジュール
nodeでpitつくろうかと思ったけど、nodeのYAMLモジュールがRubyとかPerlでつくったYAMLのパースでエラって互換性とれなそうなので諦めた。
--- foo: bar
Error: expected indent after document, near " \nfoo: bar\n" at Parser.expect (/Users/hokamura/tmp/yaml/node_modules/yaml/lib/yaml.js:174:9) at Parser.parseDoc (/Users/hokamura/tmp/yaml/node_modules/yaml/lib/yaml.js:256:8) at Parser.parse (/Users/hokamura/tmp/yaml/node_modules/yaml/lib/yaml.js:226:19) at Object.eval (/Users/hokamura/tmp/yaml/node_modules/yaml/lib/yaml.js:375:46) at Object.<anonymous> (/Users/hokamura/tmp/yaml/test.js:3:16) at Module._compile (module.js:404:26) at Object..js (module.js:410:10) at Module.load (module.js:336:31) at Function._load (module.js:297:12) at Array.<anonymous> (module.js:423:10)
ドキュメント(---)のあとはインデントしろってことみたいだけどYAMLの仕様的にどうなのかがよくわからん。
yamlsihというのあったのでこっちも試して見た。こっちはruby版のpitなら大丈夫だけどPerl版のpitで出力されたYAMLのパースがうまくいかない。
--- "foo": 'bar'
こんな感じでPerl版のYAMLはクオートされていて、これをyamlishでパースすると
{ foo: '\'bar\'' }
こうなる。
pitと互換性とるの諦めてJSONとかで設定保存する別のライブラリにしようと思う。