| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Servant.Elm
Description
Basic usage:
import MyLib (MyServantApiType)
import Servant.Elm
spec :: Spec
spec = Spec ["Generated", "MyApi"]
(defElmImports : generateElmForAPI (Proxy :: Proxy MyServantApiType))
main :: IO ()
main = specsToDir [spec] "my-elm-dir"Synopsis
- generateElmForAPI :: (HasForeign LangElm ElmDatatype api, GenerateList ElmDatatype (Foreign ElmDatatype api)) => Proxy api -> [Text]
- generateElmForAPIWith :: (HasForeign LangElm ElmDatatype api, GenerateList ElmDatatype (Foreign ElmDatatype api)) => ElmOptions -> Proxy api -> [Text]
- data ElmOptions = ElmOptions {}
- data UrlPrefix
- defElmOptions :: ElmOptions
- defElmImports :: Text
- data Spec = Spec [Text] [Text]
- class ElmType a
- specsToDir :: [Spec] -> FilePath -> IO ()
- data Proxy (t :: k) :: forall k. k -> Type = Proxy
Documentation
generateElmForAPI :: (HasForeign LangElm ElmDatatype api, GenerateList ElmDatatype (Foreign ElmDatatype api)) => Proxy api -> [Text] #
Generate Elm code for the API with default options.
Returns a list of Elm functions to query your Servant API from Elm.
You could spit these out to a file and call them from your Elm code, but you
would be better off creating a Spec with the result and using specsToDir,
which handles the module name for you.
generateElmForAPIWith :: (HasForeign LangElm ElmDatatype api, GenerateList ElmDatatype (Foreign ElmDatatype api)) => ElmOptions -> Proxy api -> [Text] #
Generate Elm code for the API with custom options.
data ElmOptions #
Options to configure how code is generated.
Constructors
| ElmOptions | |
Fields
| |
Default options for generating Elm code.
The default options are:
{ urlPrefix =
Static ""
, elmExportOptions =
Elm.defaultOptions
, emptyResponseElmTypes =
[ toElmType NoContent ]
, stringElmTypes =
[ toElmType "" ]
}defElmImports :: Text #
Default imports required by generated Elm code.
You probably want to include this at the top of your generated Elm module.
The default required imports are:
import Json.Decode exposing (..) import Json.Decode.Pipeline exposing (..) import Json.Encode import Http import String
Convenience re-exports from the Elm module
Instances
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, is a safer alternative to the
Proxy :: Proxy a'undefined :: a' idiom.
>>>Proxy :: Proxy (Void, Int -> Int)Proxy
Proxy can even hold types of higher kinds,
>>>Proxy :: Proxy EitherProxy
>>>Proxy :: Proxy FunctorProxy
>>>Proxy :: Proxy complicatedStructureProxy
Constructors
| Proxy |
Instances
| Generic1 (Proxy :: k -> Type) | |
| Monad (Proxy :: Type -> Type) | Since: base-4.7.0.0 |
| Functor (Proxy :: Type -> Type) | Since: base-4.7.0.0 |
| Applicative (Proxy :: Type -> Type) | Since: base-4.7.0.0 |
| Foldable (Proxy :: Type -> Type) | Since: base-4.7.0.0 |
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 # elem :: Eq a => a -> Proxy a -> Bool # maximum :: Ord a => Proxy a -> a # minimum :: Ord a => Proxy a -> a # | |
| Traversable (Proxy :: Type -> Type) | Since: base-4.7.0.0 |
| Contravariant (Proxy :: Type -> Type) | |
| Representable (Proxy :: Type -> Type) | |
| Alternative (Proxy :: Type -> Type) | Since: base-4.9.0.0 |
| MonadPlus (Proxy :: Type -> Type) | Since: base-4.9.0.0 |
| Hashable1 (Proxy :: Type -> Type) | |
Defined in Data.Hashable.Class | |
| Bounded (Proxy t) | Since: base-4.7.0.0 |
| Enum (Proxy s) | Since: base-4.7.0.0 |
| Eq (Proxy s) | Since: base-4.7.0.0 |
| Ord (Proxy s) | Since: base-4.7.0.0 |
| Read (Proxy t) | Since: base-4.7.0.0 |
| Show (Proxy s) | Since: base-4.7.0.0 |
| Ix (Proxy s) | Since: base-4.7.0.0 |
Defined in Data.Proxy | |
| Generic (Proxy t) | |
| Semigroup (Proxy s) | Since: base-4.9.0.0 |
| Monoid (Proxy s) | Since: base-4.7.0.0 |
| Hashable (Proxy a) | |
Defined in Data.Hashable.Class | |
| ElmType a => ElmType (Proxy a) | |
Defined in Elm.Type Methods toElmType :: Proxy a -> ElmDatatype # | |
| type Rep1 (Proxy :: k -> Type) | Since: base-4.6.0.0 |
| type Rep (Proxy :: Type -> Type) | |
| type Rep (Proxy t) | Since: base-4.6.0.0 |