package ppx_csv_conv

  1. Overview
  2. Docs
Generate functions to read/write records in csv format

Install

Dune Dependency

Authors

Maintainers

Sources

ppx_csv_conv-v0.10.0.tar.gz
sha256=ab4058a7f67c6ec7f7ddcd40d36530812b27947341912c7d3497e0343c1f962b
md5=32663f1561cf99bc49bf3e71ec271a92

Description

Part of the Jane Street's PPX rewriters collection.

Published: 03 Jan 2018

README

ppx_csv_conv

Generate functions to read/write records in csv format.

ppx_csv_conv generates functions to output some records as a csv file, and read the records back from a list of strings coming from a csv file or a database query.

Usage

Annotate the type: [@@deriving fields, csv]

type t = {
  field : ...
  ....
} [@@deriving fields, csv]

Csv uses fields so fields is also required. Now the functions listed in Csvfields.Csv.Csvable are included in the module, including conversion to and from string lists, dumping to files, and loading files.

The Csvfields.Csv module provides the Atom functor, which accepts a Stringable module to produce the necessary functions for recursive calls:

module Date = struct
  include Date
  include (Csvfields.Csv.Atom (Date) : Csvfields.Csv.Csvable with type t := t)
end

type t = {
  a : float;
  b : string;
  c : int;
  e : Date.t;
} [@@deriving fields, csv]

Generate code/functions with types:

include (Csvfields.Csv.Csvable with type  t :=  t)

(Known) limitations:

  • No option, ref, or lazy_t types allowed.

  • No variant types ... nothing other than primitive types and records. You should create your own stringable version of those types and use the Atom functor.

  • The name of the type must be t.

Dependencies (10)

  1. ocaml-migrate-parsetree >= "0.4" & < "2.0.0"
  2. jbuilder >= "1.0+beta12"
  3. ppx_type_conv >= "v0.10" & < "v0.11"
  4. ppx_metaquot >= "v0.10" & < "v0.11"
  5. ppx_fields_conv >= "v0.10" & < "v0.11"
  6. ppx_driver >= "v0.10" & < "v0.11"
  7. ppx_core >= "v0.10" & < "v0.11"
  8. ppx_conv_func >= "v0.10" & < "v0.11"
  9. csvfields >= "v0.10" & < "v0.11"
  10. ocaml >= "4.04.1"

Dev Dependencies

None

Used by (2)

  1. biotk
  2. gemini >= "0.2.0"

Conflicts

None

OCaml

Innovation. Community. Security.