CharterAgreementProtocol.Json (Charter Agreement Protocol v0.2.1)

Copy Markdown View Source

CAP never authorizes.

Deterministic JSON decoder producing a closed tagged value algebra.

Object order is preserved, duplicate names and trailing non-whitespace are rejected, numbers must round-trip an ECMAScript double, and malformed input always returns a value-free typed error.

Summary

Functions

Decode one complete JSON value.

Decode one complete JSON value within caller-supplied ceilings.

Types

value()

@type value() ::
  :null
  | {:boolean, boolean()}
  | {:integer, integer()}
  | {:float, float()}
  | {:string, binary()}
  | {:array, [value()]}
  | {:object, [{binary(), value()}]}

Functions

decode(input)

@spec decode(term()) :: {:ok, value()} | {:error, CharterAgreementProtocol.Error.t()}

Decode one complete JSON value.

decode(input, limits)

@spec decode(term(), term()) ::
  {:ok, value()} | {:error, CharterAgreementProtocol.Error.t()}

Decode one complete JSON value within caller-supplied ceilings.