-- generated by elm_rs module EncodeDecodeTop exposing (..) import Dict exposing (Dict) import Http import Json.Decode import Json.Encode import Url.Builder resultEncoder : (e -> Json.Encode.Value) -> (t -> Json.Encode.Value) -> (Result e t -> Json.Encode.Value) resultEncoder errEncoder okEncoder enum = case enum of Ok inner -> Json.Encode.object [ ( "Ok", okEncoder inner ) ] Err inner -> Json.Encode.object [ ( "Err", errEncoder inner ) ] resultDecoder : Json.Decode.Decoder e -> Json.Decode.Decoder t -> Json.Decode.Decoder (Result e t) resultDecoder errDecoder okDecoder = Json.Decode.oneOf [ Json.Decode.map Ok (Json.Decode.field "Ok" okDecoder) , Json.Decode.map Err (Json.Decode.field "Err" errDecoder) ] type DownMsg = Landing (LandingDownMsg) | Term (TermDownMsg) downMsgEncoder : DownMsg -> Json.Encode.Value downMsgEncoder enum = case enum of Landing inner -> Json.Encode.object [ ( "Landing", landingDownMsgEncoder inner ) ] Term inner -> Json.Encode.object [ ( "Term", termDownMsgEncoder inner ) ] type TermDownMsg = FullTermUpdate (TerminalScreen) | BackendTermStartFailure (String) | TermNotStarted termDownMsgEncoder : TermDownMsg -> Json.Encode.Value termDownMsgEncoder enum = case enum of FullTermUpdate inner -> Json.Encode.object [ ( "FullTermUpdate", terminalScreenEncoder inner ) ] BackendTermStartFailure inner -> Json.Encode.object [ ( "BackendTermStartFailure", Json.Encode.string inner ) ] TermNotStarted -> Json.Encode.string "TermNotStarted" type alias TerminalScreen = { cols : Int , rows : Int , content : String } terminalScreenEncoder : TerminalScreen -> Json.Encode.Value terminalScreenEncoder struct = Json.Encode.object [ ( "cols", (Json.Encode.int) struct.cols ) , ( "rows", (Json.Encode.int) struct.rows ) , ( "content", (Json.Encode.string) struct.content ) ] type LandingDownMsg = Greeting (String) | TimeUpdate (String) landingDownMsgEncoder : LandingDownMsg -> Json.Encode.Value landingDownMsgEncoder enum = case enum of Greeting inner -> Json.Encode.object [ ( "Greeting", Json.Encode.string inner ) ] TimeUpdate inner -> Json.Encode.object [ ( "TimeUpdate", Json.Encode.string inner ) ] type UpMsg = Landing (LandingUpMsg) | Term (TermUpMsg) upMsgDecoder : Json.Decode.Decoder UpMsg upMsgDecoder = Json.Decode.oneOf [ Json.Decode.map Landing (Json.Decode.field "Landing" (landingUpMsgDecoder)) , Json.Decode.map Term (Json.Decode.field "Term" (termUpMsgDecoder)) ] type TermUpMsg = RequestFullTermState | CloseTerm | RequestIncrementalTermStateUpdate | SendCharacter (String) termUpMsgDecoder : Json.Decode.Decoder TermUpMsg termUpMsgDecoder = Json.Decode.oneOf [ Json.Decode.string |> Json.Decode.andThen (\x -> case x of "RequestFullTermState" -> Json.Decode.succeed RequestFullTermState unexpected -> Json.Decode.fail <| "Unexpected variant " ++ unexpected ) , Json.Decode.string |> Json.Decode.andThen (\x -> case x of "CloseTerm" -> Json.Decode.succeed CloseTerm unexpected -> Json.Decode.fail <| "Unexpected variant " ++ unexpected ) , Json.Decode.string |> Json.Decode.andThen (\x -> case x of "RequestIncrementalTermStateUpdate" -> Json.Decode.succeed RequestIncrementalTermStateUpdate unexpected -> Json.Decode.fail <| "Unexpected variant " ++ unexpected ) , Json.Decode.map SendCharacter (Json.Decode.field "SendCharacter" (Json.Decode.string)) ] type LandingUpMsg = RequestGreet (String) landingUpMsgDecoder : Json.Decode.Decoder LandingUpMsg landingUpMsgDecoder = Json.Decode.oneOf [ Json.Decode.map RequestGreet (Json.Decode.field "RequestGreet" (Json.Decode.string)) ]