From 5348b220c8ec071eee01578f0ea525e28d3a5c3f Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Wed, 13 Sep 2017 21:48:04 +0200 Subject: Mode DecodeFlags and Model to seperate files --- src/client/elm/DecodeFlags.elm | 54 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/client/elm/DecodeFlags.elm (limited to 'src/client/elm/DecodeFlags.elm') diff --git a/src/client/elm/DecodeFlags.elm b/src/client/elm/DecodeFlags.elm new file mode 100644 index 0000000..5acc4f9 --- /dev/null +++ b/src/client/elm/DecodeFlags.elm @@ -0,0 +1,54 @@ +module DecodeFlags exposing (Flags, init) + +import Json.Decode exposing (Decoder, andThen, fail, string, succeed) +import Json.Decode.Pipeline exposing (decode, required) +import Model exposing (..) + + +type alias Flags = + Json.Decode.Value + + +init : Flags -> ( Model, Cmd msg ) +init flags = + case Json.Decode.decodeValue decodeUsers flags of + Ok user -> + ( Model user, Cmd.none ) + + Err err -> + Debug.crash err + + +decodeUsers : Decoder (List User) +decodeUsers = + Json.Decode.list decodeUser + + +decodeUser : Decoder User +decodeUser = + decode User + |> required "type" decodeUserType + |> required "value" string + + +decodeUserType : Json.Decode.Decoder UserType +decodeUserType = + string + |> andThen + (\s -> + case s of + "s" -> + succeed Student + + "c" -> + succeed Class + + "t" -> + succeed Teacher + + "r" -> + succeed Room + + _ -> + fail ("What the f*ck is " ++ s ++ "?") + ) -- cgit v1.1