HaskellでYAMLを扱うライブラリはyaml,HsSyckがあるんだけどlibyamlのバインディングであるyamlのほうは使い方がわからん。
なので、HsSyckの使い方を覚えた。
import Data.Yaml.Syck
global_tag = mkNode $ EStr $ packBuf "Item 1"
name_tag = mkNode $ EStr $ packBuf "name"
name_value = mkNode $ EStr $ packBuf "kzfm"
email_tag = mkNode $ EStr $ packBuf "address"
email_value = mkNode $ EStr $ packBuf "xxx@gmail.com"
pass_tag = mkNode $ EStr $ packBuf "password"
pass_value = mkNode $ EStr $ packBuf "snail"
item = mkNode $ EMap [(name_tag,name_value),(email_tag,email_value),(pass_tag,pass_value)]
node = mkNode $ EMap [(global_tag,item)]
main = do
emitYamlFile "test.yaml" node
作成されたtest.yamlの中身
---
? "Item 1"
:
? "name"
: >-
kzfm
? "address"
: >-
xxx@gmail.com
? "password"
: >-
snail
これをperlでparseしてみる
use YAML;
my $filename = "test.yaml";
my $doc = YAML::LoadFile($filename);
print YAML::Dump($doc);
実行結果
---
Item 1:
address: xxx@gmail.com
name: kzfm
password: snail
ナイス!