Elm:
YAMLを扱う

How to: (方法)

ElmでYAMLを扱う公式のライブラリは存在しません。しかし、JavaScriptとの相互運用を通じてYAMLを扱うことができます。

port module Main exposing (..)

-- ElmからJavaScriptにデータを送るポート
port toJs : String -> Cmd msg

-- JavaScriptからElmにデータを受け取るポート
port fromJs : (String -> msg) -> Sub msg

-- YAML文字列をJavaScriptに送ってパースを依頼する
parseYaml : String -> Cmd msg
parseYaml yamlString =
    toJs yamlString

JavaScript側でパースを行うコードは次の通りです:

// portsを使ってElmと通信する
app.ports.toJs.subscribe(function(yamlString) {
    try {
        var result = YAML.parse(yamlString); // パース
        app.ports.fromJs.send(JSON.stringify(result)); // 結果をElmに送信
    } catch(error) {
        app.ports.fromJs.send(JSON.stringify({ error: error.message })); // エラーをElmに送信
    }
});

Elmでの受け取り例は以下の通りです。

type Msg
    = ReceiveParsedData String

subscriptions : Model -> Sub Msg
subscriptions _ =
    fromJs ReceiveParsedData

Deep Dive (深いダイブ)

YAMLはYAML Ain’t Markup Languageの略で、設定ファイルなどに使われることが多いです。JSONの代わりとしても使われており、人が読み書きしやすい形式として設計されています。Elmにはネイティブサポートはないですが、JavaScriptと組み合わせることで簡単に扱うことが可能です。

See Also (関連リンク)