elm-street-0.1.0.1: Crossing the road between Haskell and Elm

Safe HaskellNone
LanguageHaskell2010

Elm.Print.Decoder

Contents

Description

Pretty-printing functions for Decoder.elm module. Also contains decoders for common types which go to the ElmStreet.elm module.

Synopsis

Documentation

prettyShowDecoder :: ElmDefinition -> Text Source #

Sum Types:

Haskell type

type User
    = Foo
    | Bar String Int

Encoded JSON on Haskell side

    [ { "tag" : Foo
      }
    , { "tag" : Bar
      , "contents" : ["asd", 42, "qwerty"]
      }
    ]

Elm decoder

userDecoder : Decoder User
userDecoder =
    let decide : String -> Decoder User
        decide x = case x of
            "Foo" -> D.succeed Foo
            "Bar" -> D.field "contents" <| D.map2 Bar (D.index 0 D.string) (D.index 1 D.int)
            x -> D.fail <| "There is no constructor for User type:" ++ x
    in D.andThen decide (D.field "tag" D.string)

Standard missing decoders

decodeEnum :: Text Source #

JSON decoder Elm help function for Enum types.

decodeChar :: Text Source #

JSON decoder Elm help function for Chars.

decodeEither :: Text Source #

JSON decoder Elm help function for Eithers.

decodePair :: Text Source #

JSON decoder Elm help function for 2-tuples.

decodeTriple :: Text Source #

JSON decoder Elm help function for 3-tuples.