View Source argo_json_scalar_decoder behaviour (argo v1.0.3)

Summary

Types

-type desc_hint() :: null | boolean | string | bytes | int | float.
-type error_reason() :: invalid | type_mismatch | dynamic().
-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) ->
                       {ok, JsonScalarDecoder, BlockScalar} | {error, ErrorReason}
                       when
                           JsonScalarDecoder :: t(),
                           BlockKey :: argo_types:name(),
                           BlockScalarHint :: scalar_hint(),
                           JsonValue :: argo_json:json_value(),
                           BlockScalar :: argo_scalar_value:inner(),
                           ErrorReason :: error_reason().
-callback decode_desc_scalar(JsonScalarDecoder, DescHint, JsonValue) ->
                      {ok, JsonScalarDecoder, DescScalar} | {error, ErrorReason}
                      when
                          JsonScalarDecoder :: t(),
                          DescHint :: desc_hint(),
                          JsonValue :: argo_json:json_value(),
                          DescScalar :: argo_desc_value:inner_scalar(),
                          ErrorReason :: error_reason().
-callback decode_scalar(JsonScalarDecoder, ScalarHint, JsonValue) ->
                 {ok, JsonScalarDecoder, Scalar} | {error, ErrorReason}
                 when
                     JsonScalarDecoder :: t(),
                     ScalarHint :: scalar_hint(),
                     JsonValue :: argo_json:json_value(),
                     Scalar :: argo_scalar_value:inner(),
                     ErrorReason :: error_reason().
-callback init(Options) -> JsonScalarDecoder when Options :: options(), JsonScalarDecoder :: t().