Copyright | Plow Technologies 2017 |
---|---|
License | BSD3 |
Maintainer | mchaver@gmail.com |
Stability | experimental |
Safe Haskell | None |
Language | Haskell2010 |
- data OCamlPackage (packageName :: Symbol) (packageDependencies :: [*])
- type NoDependency = '[]
- data PackageOptions = PackageOptions {}
- defaultPackageOptions :: PackageOptions
- data SpecOptions = SpecOptions {}
- defaultSpecOptions :: SpecOptions
- class HasOCamlPackage a where
- class HasOCamlModule a where
- class HasOCamlTypeMetaData a where
Documentation
data OCamlPackage (packageName :: Symbol) (packageDependencies :: [*]) Source #
(HasOCamlTypeMetaData * (OCamlPackage packageName deps), HasOCamlTypeMetaData * rest) => HasOCamlTypeMetaData * ((:<|>) (OCamlPackage packageName deps) rest) Source # | packages |
(HasOCamlTypeMetaData [*] deps, HasOCamlTypeMetaData k1 modules) => HasOCamlTypeMetaData * ((:>) * k1 (OCamlPackage packageName deps) modules) Source # | build a packages dependencies and its declared modules |
(HasOCamlTypeMetaData [*] deps, HasOCamlTypeMetaData k1 a, HasOCamlPackage' k1 a) => HasOCamlPackage * ((:>) * k1 (OCamlPackage packageName deps) a) Source # | |
type NoDependency = '[] Source #
data PackageOptions Source #
Options for creating an OCaml package based on Haskell types.
PackageOptions | |
|
defaultPackageOptions :: PackageOptions Source #
Default PackageOptions
.
data SpecOptions Source #
Details for OCaml spec.
SpecOptions | |
|
defaultSpecOptions :: SpecOptions Source #
Default SpecOptions
.
class HasOCamlPackage a where Source #
Iterate over a list of OCamlModule types that are concated with '(:|)', to create a package.
(HasOCamlTypeMetaData k a, HasOCamlPackage' k a) => HasOCamlPackage k a Source # | |
(HasOCamlTypeMetaData [*] deps, HasOCamlTypeMetaData k1 a, HasOCamlPackage' k1 a) => HasOCamlPackage * ((:>) * k1 (OCamlPackage packageName deps) a) Source # | |
class HasOCamlModule a where Source #
Depending on PackageOptions
settings, mkModule
can
- make a declaration file containing encoders and decoders
- make an OCaml interface file
- make a Spec file that tests the encoders and decoders against a golden file and a servant server
mkModule :: Proxy a -> PackageOptions -> Map HaskellTypeMetaData OCamlTypeMetaData -> IO () Source #
(KnownSymbols modules, HasOCamlModule' k1 api) => HasOCamlModule * ((:>) * k1 (OCamlModule modules) api) Source # | |
class HasOCamlTypeMetaData a where Source #
Produce type meta data for an OCamlPackage and its dependencies
HasOCamlTypeMetaData [k] ([] k) Source # | empty list |
(HasOCamlTypeMetaData * modul, HasOCamlTypeMetaData * rst) => HasOCamlTypeMetaData * ((:<|>) modul rst) Source # | modules |
(HasOCamlTypeMetaData * (OCamlPackage packageName deps), HasOCamlTypeMetaData * rest) => HasOCamlTypeMetaData * ((:<|>) (OCamlPackage packageName deps) rest) Source # | packages |
(HasOCamlTypeMetaData a modul, HasOCamlTypeMetaData [a] rst) => HasOCamlTypeMetaData [a] ((:) a modul rst) Source # | packages |
(HasOCamlTypeMetaData [*] deps, HasOCamlTypeMetaData k1 modules) => HasOCamlTypeMetaData * ((:>) * k1 (OCamlPackage packageName deps) modules) Source # | build a packages dependencies and its declared modules |
(KnownSymbols modules, HasOCamlTypeMetaData' k1 api) => HasOCamlTypeMetaData * ((:>) * k1 (OCamlModule modules) api) Source # | single module |