package decoders-sexplib

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

Turn S-expressions into Ocaml values via Sexplib.

Following the convention of Sexplib0.Sexp_conv.hashtbl_of_sexp, we consider an S-expression to be an "object" if it is a list of two-element lists. For example:

((field1 value1) (field2 (value2 value3)))

Following `dune` conventions, we also allow as "objects" S-expressions like:

((field1 value1) (field2 value2 value3))

These two S-expressions will be treated in the same way by the object combinators below (e.g. field).

Like YAML, fields of an object are not necessarily atoms. To handle these, look for the primed combinators (e.g. keys').

include Decoders.Decode.S with type value = Sexplib0.Sexp.t
type value = Sexplib0.Sexp.t
type error = value Decoders__Decode.exposed_error
val pp_error : Stdlib.Format.formatter -> error -> unit
val string_of_error : error -> string
val of_string : string -> (value, error) Decoders__Decode.result
val of_file : string -> (value, error) Decoders__Decode.result
type 'a decoder
val string : string decoder
val int : int decoder
val float : float decoder
val bool : bool decoder
val null : unit decoder
val value : value decoder
val list : 'a decoder -> 'a list decoder
val list_filter : 'a option decoder -> 'a list decoder
val list_fold_left : ('a -> 'a decoder) -> 'a -> 'a decoder
val array : 'a decoder -> 'a array decoder
val index : int -> 'a decoder -> 'a decoder
val uncons : ('a -> 'b decoder) -> 'a decoder -> 'b decoder
val field : string -> 'a decoder -> 'a decoder
val field_opt : string -> 'a decoder -> 'a option decoder
val field_opt_or : default:'a -> string -> 'a decoder -> 'a decoder
val single_field : (string -> 'a decoder) -> 'a decoder
val at : string list -> 'a decoder -> 'a decoder
val maybe : 'a decoder -> 'a option decoder
val nullable : 'a decoder -> 'a option decoder
val one_of : (string * 'a decoder) list -> 'a decoder
val pick : (string * 'a decoder decoder) list -> 'a decoder
val decode_sub : value -> 'a decoder -> 'a decoder
val map : ('a -> 'b) -> 'a decoder -> 'b decoder
val apply : ('a -> 'b) decoder -> 'a decoder -> 'b decoder
val keys : string list decoder
val key_value_pairs : 'v decoder -> (string * 'v) list decoder
val key_value_pairs_seq : (string -> 'v decoder) -> 'v list decoder
val keys' : 'k decoder -> 'k list decoder
val key_value_pairs' : 'k decoder -> 'v decoder -> ('k * 'v) list decoder
val key_value_pairs_seq' : 'k decoder -> ('k -> 'v decoder) -> 'v list decoder
val succeed : 'a -> 'a decoder
val fail : string -> 'a decoder
val fail_with : error -> 'a decoder
val from_result : ('a, error) Decoders__Decode.result -> 'a decoder
val and_then : ('a -> 'b decoder) -> 'a decoder -> 'b decoder
val fix : ('a decoder -> 'a decoder) -> 'a decoder
val of_of_string : msg:string -> (string -> 'a option) -> 'a decoder
module Infix : sig ... end
val (>|=) : 'a decoder -> ('a -> 'b) -> 'b decoder
val (>>=) : 'a decoder -> ('a -> 'b decoder) -> 'b decoder
val (<*>) : ('a -> 'b) decoder -> 'a decoder -> 'b decoder
val (<$>) : ('a -> 'b) -> 'a decoder -> 'b decoder
val let+ : 'a decoder -> ('a -> 'b) -> 'b decoder
val and+ : 'a decoder -> 'b decoder -> ('a * 'b) decoder
val let* : 'a decoder -> ('a -> 'b decoder) -> 'b decoder
val and* : 'a decoder -> 'b decoder -> ('a * 'b) decoder
val decode_value : 'a decoder -> value -> ('a, error) Decoders__Decode.result
val decode_string : 'a decoder -> string -> ('a, error) Decoders__Decode.result
val decode_file : 'a decoder -> string -> ('a, error) Decoders__Decode.result
module Pipeline : sig ... end
OCaml

Innovation. Community. Security.