blob: d1f13482825e9770b1ab6a871c6b06b6e733117c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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"
|