servant-reason-0.1.2.0: Derive Reason types to interact with a Haskell backend

Safe HaskellNone
LanguageHaskell2010

Servant.Reason

Contents

Description

Basic usage:

import MyLib (MyServantApiType)
import Servant.Reason

spec :: Spec
spec = Spec ["Generated", "MyApi"]
            (defReasonImports : generateReasonForAPI (Proxy :: Proxy MyServantApiType))

main :: IO ()
main = specsToDir [spec] "my-reason-dir"
Synopsis

Documentation

generateReasonForAPI :: (HasForeign LangReason ReasonDatatype api, GenerateList ReasonDatatype (Foreign ReasonDatatype api)) => Proxy api -> [Text] Source #

Generate Reason code for the API with default options.

Returns a list of Reason functions to query your Servant API from Reason.

You could spit these out to a file and call them from your Reason code, but you would be better off creating a Spec with the result and using specsToDir, which handles the module name for you.

generateReasonForAPIWith :: (HasForeign LangReason ReasonDatatype api, GenerateList ReasonDatatype (Foreign ReasonDatatype api)) => ReasonOptions -> Proxy api -> [Text] Source #

Generate Reason code for the API with custom options.

data ReasonOptions Source #

Options to configure how code is generated.

Constructors

ReasonOptions 

Fields

data UrlPrefix Source #

Constructors

Static Text 
Dynamic 

defReasonOptions :: ReasonOptions Source #

Default options for generating Reason code.

The default options are:

{ urlPrefix =
    Static ""
, reasonExportOptions =
    Reason.defaultOptions
, emptyResponseReasonTypes =
    [ toReasonType NoContent ]
, stringReasonTypes =
    [ toReasonType "" ]
}

defReasonImports :: Text Source #

Default imports required by generated Reason code.

You probably want to include this at the top of your generated Reason module.

Convenience re-exports from the Reason module

data Spec #

Constructors

Spec [Text] [Text] 
Instances
Eq Spec 
Instance details

Defined in Reason.File

Methods

(==) :: Spec -> Spec -> Bool #

(/=) :: Spec -> Spec -> Bool #

Show Spec 
Instance details

Defined in Reason.File

Methods

showsPrec :: Int -> Spec -> ShowS #

show :: Spec -> String #

showList :: [Spec] -> ShowS #

class ReasonType a #

Instances
ReasonType Bool 
Instance details

Defined in Reason.Type

ReasonType Char 
Instance details

Defined in Reason.Type

ReasonType Double 
Instance details

Defined in Reason.Type

ReasonType Float 
Instance details

Defined in Reason.Type

ReasonType Int 
Instance details

Defined in Reason.Type

ReasonType Int8 
Instance details

Defined in Reason.Type

ReasonType Int16 
Instance details

Defined in Reason.Type

ReasonType Int32 
Instance details

Defined in Reason.Type

ReasonType Int64 
Instance details

Defined in Reason.Type

ReasonType () 
Instance details

Defined in Reason.Type

Methods

toReasonType :: () -> ReasonDatatype #

ReasonType Text 
Instance details

Defined in Reason.Type

ReasonType UTCTime 
Instance details

Defined in Reason.Type

ReasonType ReasonDatatype Source # 
Instance details

Defined in Servant.Reason.Internal.Orphans

ReasonType NoContent Source # 
Instance details

Defined in Servant.Reason.Internal.Orphans

ReasonType Day 
Instance details

Defined in Reason.Type

ReasonType a => ReasonType [a] 
Instance details

Defined in Reason.Type

Methods

toReasonType :: [a] -> ReasonDatatype #

ReasonType a => ReasonType (Maybe a) 
Instance details

Defined in Reason.Type

ReasonType v => ReasonType (IntMap v) 
Instance details

Defined in Reason.Type

(ReasonType a, ReasonType b) => ReasonType (a, b) 
Instance details

Defined in Reason.Type

Methods

toReasonType :: (a, b) -> ReasonDatatype #

(HasReasonComparable k, ReasonType v) => ReasonType (Map k v) 
Instance details

Defined in Reason.Type

Methods

toReasonType :: Map k v -> ReasonDatatype #

ReasonType a => ReasonType (Proxy a) 
Instance details

Defined in Reason.Type

ReasonType a => ReasonType (Headers ls a) Source # 
Instance details

Defined in Servant.Reason.Internal.Orphans

(ReasonType a, ReasonType b, ReasonType c) => ReasonType (a, b, c) 
Instance details

Defined in Reason.Type

Methods

toReasonType :: (a, b, c) -> ReasonDatatype #

specsToDir :: [Spec] -> FilePath -> IO () #

Convenience re-exports from Data.Proxy

data Proxy (t :: k) :: forall k. k -> Type #

Proxy is a type that holds no data, but has a phantom parameter of arbitrary type (or even kind). Its use is to provide type information, even though there is no value available of that type (or it may be too costly to create one).

Historically, Proxy :: Proxy a is a safer alternative to the 'undefined :: a' idiom.

>>> Proxy :: Proxy (Void, Int -> Int)
Proxy

Proxy can even hold types of higher kinds,

>>> Proxy :: Proxy Either
Proxy
>>> Proxy :: Proxy Functor
Proxy
>>> Proxy :: Proxy complicatedStructure
Proxy

Constructors

Proxy 
Instances
Generic1 (Proxy :: k -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 Proxy :: k -> Type #

Methods

from1 :: Proxy a -> Rep1 Proxy a #

to1 :: Rep1 Proxy a -> Proxy a #

Monad (Proxy :: Type -> Type)

Since: base-4.7.0.0

Instance details

Defined in Data.Proxy

Methods

(>>=) :: Proxy a -> (a -> Proxy b) -> Proxy b #

(>>) :: Proxy a -> Proxy b -> Proxy b #

return :: a -> Proxy a #

fail :: String -> Proxy a #

Functor (Proxy :: Type -> Type)

Since: base-4.7.0.0

Instance details

Defined in Data.Proxy

Methods

fmap :: (a -> b) -> Proxy a -> Proxy b #

(<$) :: a -> Proxy b -> Proxy a #

Applicative (Proxy :: Type -> Type)

Since: base-4.7.0.0

Instance details

Defined in Data.Proxy

Methods

pure :: a -> Proxy a #

(<*>) :: Proxy (a -> b) -> Proxy a -> Proxy b #

liftA2 :: (a -> b -> c) -> Proxy a -> Proxy b -> Proxy c #

(*>) :: Proxy a -> Proxy b -> Proxy b #

(<*) :: Proxy a -> Proxy b -> Proxy a #

Foldable (Proxy :: Type -> Type)

Since: base-4.7.0.0

Instance details

Defined in Data.Foldable

Methods

fold :: Monoid m => Proxy m -> m #

foldMap :: Monoid m => (a -> m) -> Proxy a -> m #

foldr :: (a -> b -> b) -> b -> Proxy a -> b #

foldr' :: (a -> b -> b) -> b -> Proxy a -> b #

foldl :: (b -> a -> b) -> b -> Proxy a -> b #

foldl' :: (b -> a -> b) -> b -> Proxy a -> b #

foldr1 :: (a -> a -> a) -> Proxy a -> a #

foldl1 :: (a -> a -> a) -> Proxy a -> a #

toList :: Proxy a -> [a] #

null :: Proxy a -> Bool #

length :: Proxy a -> Int #

elem :: Eq a => a -> Proxy a -> Bool #

maximum :: Ord a => Proxy a -> a #

minimum :: Ord a => Proxy a -> a #

sum :: Num a => Proxy a -> a #

product :: Num a => Proxy a -> a #

Traversable (Proxy :: Type -> Type)

Since: base-4.7.0.0

Instance details

Defined in Data.Traversable

Methods

traverse :: Applicative f => (a -> f b) -> Proxy a -> f (Proxy b) #

sequenceA :: Applicative f => Proxy (f a) -> f (Proxy a) #

mapM :: Monad m => (a -> m b) -> Proxy a -> m (Proxy b) #

sequence :: Monad m => Proxy (m a) -> m (Proxy a) #

Contravariant (Proxy :: Type -> Type) 
Instance details

Defined in Data.Functor.Contravariant

Methods

contramap :: (a -> b) -> Proxy b -> Proxy a #

(>$) :: b -> Proxy b -> Proxy a #

Representable (Proxy :: Type -> Type) 
Instance details

Defined in Data.Functor.Rep

Associated Types

type Rep Proxy :: Type #

Methods

tabulate :: (Rep Proxy -> a) -> Proxy a #

index :: Proxy a -> Rep Proxy -> a #

Alternative (Proxy :: Type -> Type)

Since: base-4.9.0.0

Instance details

Defined in Data.Proxy

Methods

empty :: Proxy a #

(<|>) :: Proxy a -> Proxy a -> Proxy a #

some :: Proxy a -> Proxy [a] #

many :: Proxy a -> Proxy [a] #

MonadPlus (Proxy :: Type -> Type)

Since: base-4.9.0.0

Instance details

Defined in Data.Proxy

Methods

mzero :: Proxy a #

mplus :: Proxy a -> Proxy a -> Proxy a #

Bounded (Proxy t)

Since: base-4.7.0.0

Instance details

Defined in Data.Proxy

Methods

minBound :: Proxy t #

maxBound :: Proxy t #

Enum (Proxy s)

Since: base-4.7.0.0

Instance details

Defined in Data.Proxy

Methods

succ :: Proxy s -> Proxy s #

pred :: Proxy s -> Proxy s #

toEnum :: Int -> Proxy s #

fromEnum :: Proxy s -> Int #

enumFrom :: Proxy s -> [Proxy s] #

enumFromThen :: Proxy s -> Proxy s -> [Proxy s] #

enumFromTo :: Proxy s -> Proxy s -> [Proxy s] #

enumFromThenTo :: Proxy s -> Proxy s -> Proxy s -> [Proxy s] #

Eq (Proxy s)

Since: base-4.7.0.0

Instance details

Defined in Data.Proxy

Methods

(==) :: Proxy s -> Proxy s -> Bool #

(/=) :: Proxy s -> Proxy s -> Bool #

Ord (Proxy s)

Since: base-4.7.0.0

Instance details

Defined in Data.Proxy

Methods

compare :: Proxy s -> Proxy s -> Ordering #

(<) :: Proxy s -> Proxy s -> Bool #

(<=) :: Proxy s -> Proxy s -> Bool #

(>) :: Proxy s -> Proxy s -> Bool #

(>=) :: Proxy s -> Proxy s -> Bool #

max :: Proxy s -> Proxy s -> Proxy s #

min :: Proxy s -> Proxy s -> Proxy s #

Read (Proxy t)

Since: base-4.7.0.0

Instance details

Defined in Data.Proxy

Show (Proxy s)

Since: base-4.7.0.0

Instance details

Defined in Data.Proxy

Methods

showsPrec :: Int -> Proxy s -> ShowS #

show :: Proxy s -> String #

showList :: [Proxy s] -> ShowS #

Ix (Proxy s)

Since: base-4.7.0.0

Instance details

Defined in Data.Proxy

Methods

range :: (Proxy s, Proxy s) -> [Proxy s] #

index :: (Proxy s, Proxy s) -> Proxy s -> Int #

unsafeIndex :: (Proxy s, Proxy s) -> Proxy s -> Int

inRange :: (Proxy s, Proxy s) -> Proxy s -> Bool #

rangeSize :: (Proxy s, Proxy s) -> Int #

unsafeRangeSize :: (Proxy s, Proxy s) -> Int

Generic (Proxy t) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (Proxy t) :: Type -> Type #

Methods

from :: Proxy t -> Rep (Proxy t) x #

to :: Rep (Proxy t) x -> Proxy t #

Semigroup (Proxy s)

Since: base-4.9.0.0

Instance details

Defined in Data.Proxy

Methods

(<>) :: Proxy s -> Proxy s -> Proxy s #

sconcat :: NonEmpty (Proxy s) -> Proxy s #

stimes :: Integral b => b -> Proxy s -> Proxy s #

Monoid (Proxy s)

Since: base-4.7.0.0

Instance details

Defined in Data.Proxy

Methods

mempty :: Proxy s #

mappend :: Proxy s -> Proxy s -> Proxy s #

mconcat :: [Proxy s] -> Proxy s #

ReasonType a => ReasonType (Proxy a) 
Instance details

Defined in Reason.Type

type Rep1 (Proxy :: k -> Type)

Since: base-4.6.0.0

Instance details

Defined in GHC.Generics

type Rep1 (Proxy :: k -> Type) = D1 (MetaData "Proxy" "Data.Proxy" "base" False) (C1 (MetaCons "Proxy" PrefixI False) (U1 :: k -> Type))
type Rep (Proxy :: Type -> Type) 
Instance details

Defined in Data.Functor.Rep

type Rep (Proxy :: Type -> Type) = Void
type Rep (Proxy t)

Since: base-4.6.0.0

Instance details

Defined in GHC.Generics

type Rep (Proxy t) = D1 (MetaData "Proxy" "Data.Proxy" "base" False) (C1 (MetaCons "Proxy" PrefixI False) (U1 :: Type -> Type))