Module Kojson_pattern

module Kojson_pattern: sig .. end
Pattern Construction.


Pattern Construction.
module K: sig .. end
Patterns for Matching JSON Trees.
module Ka: sig .. end
Patterns for Matching Labelled Collections of JSON Trees.
val (^:) : string -> (Kojson.jin -> Kojson.jain -> 'a) -> Kojson.jain -> 'a
l^: f matches an association with a label l such that f matches the mapping of l and returns a pattern which matches the remainder. This combinator can be chained into patterns matching a complete association:
      open Unprime

      type connspec = {uri : string; timeout : int}

      let decode_connspec =
	let open Kojson in
	K.assoc begin
	  "uri"^: K.string *> fun uri ->
	  "timeout"^: K.int *> fun timeout ->
	  Ka.stop {uri; timeout}
	end
    
The above *> is the reversed composition operator (fun f g x -> g (f x)).
val (^?:) : string -> (Kojson.jin option -> Kojson.jain -> 'a) -> Kojson.jain -> 'a
l^?: f matches an association which either has no mapping for l and is matched by f None or which maps l to some v with remainder lvs such that f (Some v) lvs verifies a match for both v and lvs. An Option.map function is convenient for constructing patterns on options:
      let decode_certspec =
	let open Kojson in
	K.assoc begin
	  "certkey"^: K.string *> fun certkey ->
	  "cert"^?: Option.map K.string *> Option.get_or certkey *> fun cert ->
	  Ka.drop ["comment"] *>
	  Ka.stop (certkey, cert)
	end