Elm Bridge

Intro

Hackage: elm-bridge

Building the bridge from Haskell to Elm and back. Define types once, use on both sides and enjoy easy (de)serialisation. Cheers!

This version of the package only supports Elm 0.19. Version 0.5.2 supports Elm 0.18, and Version 0.3.0.2 supports Elm 0.16 and Elm 0.17.

Note that the bartavelle/json-helpers package, with version >= 1.2.0, is expected by the generated Elm modules.

Usage

{-# LANGUAGE TemplateHaskell #-} import Elm.Derive import Elm.Module import Data.Proxy data Foo = Foo { f_name :: String , f_blablub :: Int } deriving (Show, Eq) deriveBoth defaultOptions ''Foo main :: IO () main = putStrLn $ makeElmModule "Foo" [ DefineElm (Proxy :: Proxy Foo) ]

Output will be:

module Foo where import Json.Decode import Json.Decode exposing ((:=)) import Json.Encode import Json.Helpers exposing (..) type alias Foo = { f_name: String , f_blablub: Int } jsonDecFoo : Json.Decode.Decoder ( Foo ) jsonDecFoo = ("f_name" := Json.Decode.string) `Json.Decode.andThen` \pf_name -> ("f_blablub" := Json.Decode.int) `Json.Decode.andThen` \pf_blablub -> Json.Decode.succeed {f_name = pf_name, f_blablub = pf_blablub} jsonEncFoo : Foo -> Value jsonEncFoo val = Json.Encode.object [ ("f_name", Json.Encode.string val.f_name) , ("f_blablub", Json.Encode.int val.f_blablub) ]

Also, there are functions Elm.Json.stringSerForSimpleAdt and Elm.Json.stringParserForSimpleAdt to generate functions for your non-JSON ADT types.

For more usage examples check the tests or the examples dir.

Install

Haskell

Using cabal: cabal install elm-bridge

From Source: git clone https://github.com/agrafix/elm-bridge.git && cd elm-bridge && cabal install

Elm

elm package install bartavelle/json-helpers

or, for Elm 0.19:

elm install bartavelle/json-helpers

Contribute