Module type Key_value.VALIDABLE

Creating a set of validators for a key-value structure only involves implementing the VALIDABLE module.

Types

type t

The type describing the key-value data structure.

Visitors

A visitor is quite simple and can be summarised as follows:

let as_xxxx valid invalid observed_value =
  if is_xxx observed_value
  then valid (extract_xxx observed_value)
  else invalid ()
;;
val as_object : (t, (string * t) list, 'a) visitor

Visitor for Objects. For example, in Ezjsonm (which is a simpler wrapper for the Jsonm library), The AST is described in this way:

type value =
  [ `Null
  | `Bool of bool
  | `Float of float
  | `String of string
  | `A of value list
  | `O of (string * value) list
  ]

Implementing as_object would be like writing this:

let as_object valid invalid = function
  | `O kv -> valid kv
  | _ -> invalid ()
;;
val as_list : (t, t list, 'a) visitor

Visitor for List.

val as_atom : (t, string, 'a) visitor

Visitor for Atoms.

val as_string : (t, string, 'a) visitor

Visitor for String.

val as_boolean : (t, bool, 'a) visitor

Visitor for Boolean.

val as_integer : (t, int, 'a) visitor

Visitor for Integer.

val as_float : (t, float, 'a) visitor

Visitor for Float.

val as_null : (t, unit, 'a) visitor

Visitor for Null.