example-spa-elm-app/backend/EncodeDecodeTop.elm
2025-01-26 16:12:06 -05:00

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))
]