View Source argo_json_scalar_decoder behaviour (argo v1.0.1)

Summary

Types

-type desc_hint() :: null | boolean | string | bytes | int | float.
-type options() :: dynamic().
-type scalar_hint() :: boolean | bytes | {fixed, argo_types:length()} | float64 | string | varint.
-type t() :: dynamic().

Callbacks

-callback decode_block_scalar(JsonScalarDecoder, BlockKey, BlockScalarHint, JsonValue) ->
                       {JsonScalarDecoder, BlockScalar} | error
                       when
                           JsonScalarDecoder :: t(),
                           BlockKey :: argo_types:name(),
                           BlockScalarHint :: scalar_hint(),
                           JsonValue :: argo_json:json_value(),
                           BlockScalar :: argo_scalar_value:inner().
-callback decode_desc_scalar(JsonScalarDecoder, DescHint, JsonValue) ->
                      {JsonScalarDecoder, DescScalar} | error
                      when
                          JsonScalarDecoder :: t(),
                          DescHint :: desc_hint(),
                          JsonValue :: argo_json:json_value(),
                          DescScalar :: argo_desc_value:inner_scalar().
-callback decode_scalar(JsonScalarDecoder, ScalarHint, JsonValue) -> {JsonScalarDecoder, Scalar} | error
                 when
                     JsonScalarDecoder :: t(),
                     ScalarHint :: scalar_hint(),
                     JsonValue :: argo_json:json_value(),
                     Scalar :: argo_scalar_value:inner().
-callback init(Options) -> JsonScalarDecoder when Options :: options(), JsonScalarDecoder :: t().