Module Csv.Atom

A functor to quickly generate a Csvable module using its string conversion functions

Parameters

Signature

include Csvable_simple
type t

The t that can be represented in a CSV file.

val is_csv_atom : bool

true if csvable will be represented as a column, and its label is the field name of a containing record.

val rev_csv_header' : string list -> _ -> _ -> string list

A Fields.fold friendly version of a function to collect the csv header of the csvable type. The output is the header in reverse order.

val rev_csv_header_spec' : Spec.t list -> _ -> _ -> Spec.t list
val t_of_row' : _ -> string list -> (unit -> t) * string list

t_of_row' _ row generates a Fields.make_creator friendly function that outputs a pair (creator, tail) such that creator () generates the type t with the first elements in row, and tail is the remaining set of elements from row that where not used in the creation of t.

val write_row_of_t' : is_first:bool -> is_last:bool -> writer:(string -> unit) -> _ -> _ -> t -> unit

row_of_t' has the same arguments as Helper.write. The ignored arguments are used to make it Fields.fold friendly.

val csv_header : string list

The list of strings creating the header of the csvable type.

val csv_header_spec : Spec.t list
val t_of_row : string list -> t

t_of_row row creates type t from the row.

val row_of_t : t -> string list

row_of_t t creates a row from csvable.

val csv_load : ?⁠separator:char -> string -> t list

The following functions are wrappers around the corresponding functions in Csvlib.Csv.

val csv_load_in : ?⁠separator:char -> Core.In_channel.t -> t list
val csv_save_fn : ?⁠separator:char -> (string -> unit) -> t list -> unit
val csv_save_out : ?⁠separator:char -> Core.Out_channel.t -> t list -> unit
val csv_save : ?⁠separator:char -> string -> t list -> unit