diff options
Diffstat (limited to 'src/client/elm/Model/InitResult.elm')
-rw-r--r-- | src/client/elm/Model/InitResult.elm | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/client/elm/Model/InitResult.elm b/src/client/elm/Model/InitResult.elm new file mode 100644 index 0000000..d1f1348 --- /dev/null +++ b/src/client/elm/Model/InitResult.elm @@ -0,0 +1,28 @@ +module Model.InitResult + ( InitResult(..) + , initResultDecoder + ) where + +import Json.Decode as Json exposing ((:=)) + +import Model.Init exposing (Init, initDecoder) + +type InitResult = + InitEmpty + | InitSuccess Init + | InitError String + +initResultDecoder : Json.Decoder InitResult +initResultDecoder = ("tag" := Json.string) `Json.andThen` initResultDecoderWithTag + +initResultDecoderWithTag : String -> Json.Decoder InitResult +initResultDecoderWithTag tag = + case tag of + "InitEmpty" -> + Json.succeed InitEmpty + "InitSuccess" -> + Json.map InitSuccess ("contents" := initDecoder) + "InitError" -> + Json.map InitError ("contents" := Json.string) + _ -> + Json.fail <| "got " ++ tag ++ " for InitResult" |