package melange-atdgen-codec-runtime
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=56d49456f51cf057216275edca4d50843311c576ece3290d4ceed68fad0f7cba
sha512=1698e0727500e372a3c6a5de7e4d138a881542548256d01d5494c749d047fbc86742d8f7ecb5606ca8a40139762cfe70abcbe3049a87c6a02adbc531cd2146d9
Description
A Melange runtime for atdgen, based on the Js.Json.t type provided by Melange and the combinators from melange-json
Published: 06 Feb 2024
README
melange-atdgen-codec-runtime
melange-atdgen-codec-runtime
is a Melange runtime for atdgen. It is based on the Js.Json.t
provided by Melange and combinators of melange-json.
Installation
Install opam package manager.
Then:
opam install melange-atdgen-codec-runtime
Usage
To generate ml
files from atd
ones, add a couple of rules to your dune
file:
(rule
(targets test_bs.ml test_bs.mli)
(deps test.atd)
(action
(run atdgen -bs %{deps})))
(rule
(targets test_t.ml test_t.mli)
(deps test.atd)
(action
(run atdgen -t %{deps})))
You can see examples in the tests or the example.
To use the generated modules, you will need to include the runtime library in your project. To do so, add melange-atdgen-codec-runtime
to the libraries
field in your dune
file:
; ...
(libraries melange-atdgen-codec-runtime)
; ...
To write atd type definitions, please have a look at the great atd documentation.
Simple example
Reason code to query and deserialize the response of a REST API. It requires melange-fetch.
let get = (url, decode) =>
Js.Promise.(
Fetch.fetchWithInit(
url,
Fetch.RequestInit.make(~method_=Get, ()),
)
|> then_(Fetch.Response.json)
|> then_(json => json |> decode |> resolve)
);
let v: Meetup_t.events =
get(
"http://localhost:8000/events",
Atdgen_codec_runtime.Decode.decode(Meetup_bs.read_events),
);
Full example
The example directory contains a full example of a simple cli to read and write data in a JSON file.
For a complete introduction from atdgen installation to json manipulation, please refer to Getting started with ATD and Melange.
Dev Dependencies (4)
-
odoc
with-doc
-
opam-check-npm-deps
with-test
-
reason
with-test
-
melange-jest
with-test
Used by
None
Conflicts
None