reason-export alternatives and similar packages
Based on the "Web" category.
Alternatively, view reason-export alternatives based on common mentions on social networks and blogs.
-
haskell-bitmex-rest
swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition. -
servant
Servant is a Haskell DSL for describing, serving, querying, mocking, documenting web applications and more! -
swagger-petstore
swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition. -
neuron
Future-proof note-taking and publishing based on Zettelkasten (superseded by Emanote: https://github.com/srid/emanote) -
tagsoup
Haskell library for parsing and extracting information from (possibly malformed) HTML/XML documents -
keera-hails-reactive-htmldom
Keera Hails: Haskell on Rails - Reactive Programming Framework for Interactive Haskell applications -
ghcjs-dom
Make Document Object Model (DOM) apps that run in any browser and natively using WebKitGtk
Nutrient – The #1 PDF SDK Library, trusted by 10K+ developers

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of reason-export or a related project?
README
Reason Export
Create Reason classes and JSON encoders/decoders from Haskell DataTypes. Originally build by converting elm-export to Reason.
More docs on Hackage.
Usage
If you're using this package you almost certainly want to use servant-reason as well. There are tests in both packages that show to use this library.
Usage is trivial, derive Generic
and ReasonType
.
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveAnyClass #-}
module Db where
import Reason
import GHC.Generics
data Person = Person
{ id :: Int
, name :: Maybe String
} deriving (Show, Eq, Generic, ReasonType)
Then you can expose your API:
module Main where
import Data.Proxy
import Reason
import Data.Text hiding (intercalate, map)
import Db
main :: IO ()
main = do
let code = defReasonImports :
toReasonTypeSource (Proxy :: Proxy Person) :
toReasonDecoderSource (Proxy :: Proxy Person) :
writeFile "client/Types.re" $ intercalate "\n\n" $ map unpack code
That's about it. Just do this for every type that you want to expose. You can make encoders as well, and configure various settings. See Hackage.
Reason setup
The generated Reason code needs access to @glennsl/bs-json. Get the latest install instructions from there, but at the time of writing these were:
npm install --save @glennsl/bs-json
Then add @glennsl/bs-json
to bs-dependencies
in your bsconfig.json
:
{
...
"bs-dependencies": ["@glennsl/bs-json"]
}