package orsetto

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

The record scanner module for JSON object content.

type field =
  1. | Required : {
    1. nym : 'a Cf_type.nym;
    2. scan : 'a Annot.form t;
    } -> field
    (*

    A field of the named type is required.

    *)
  2. | Optional : {
    1. nym : 'a Cf_type.nym;
    2. scan : 'a Annot.form t;
    } -> field
    (*

    A field of the named type is optional.

    *)
  3. | Default : {
    1. nym : 'a Cf_type.nym;
    2. scan : 'a Annot.form t;
    3. default : 'a;
    } -> field
    (*

    A field of the named type is optional with a default value.

    *)

Field descriptor type. A schema contains a map of indexes to values of this type, which indicate whether the field is required or optional, along with a description of the type of the field value and a scanner for values of that type.

type schema

The type of a schema

val schema : ?ignore:(int * unit t) -> (Ucs_text.t * field) list -> schema

Use schema fields to make a record schema for scanning records according to fields. If ~ignore:(n, p) is provided, then as many as n unrecognized fields are scanned according to p and their values are discarded.

val range : schema -> int * int

Use range schema to get the minimum and maximum number of fields that can be processed by scanning with schema.

type pack

The type of a packed record produced by scanning with a schema.

val scan : schema -> pack t

Use scan schema to scan a record according to schema producing a pack value containing all the values in the record.

val unpack : pack -> Ucs_text.t -> 'a Cf_type.nym -> 'a Annot.form

Use unpack pack index nym to unpack from pack the value for the field named by index with the type nym.

Note well: fields with Optional type in the schema are packed with the corresponding Cf_type.Option type nym, and the unpacked value is either Some v if the field is present in the scanned record, or None if the field was not present.