151 lines
4.4 KiB
Elm
151 lines
4.4 KiB
Elm
|
|
-- 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))
|
|
]
|
|
|