blob: c8da53307ddbc24bd9997dceb8803963fd2d919a (
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 exposing
( InitResult(..)
, initResultDecoder
)
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"
|