Current section
Files
Jump to
Current section
Files
src/bison.erl
-module(bison).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([encode/1, decode/1, strict_decode/2]).
-spec encode(gleam@dict:dict(binary(), bison@bson:value())) -> bitstring().
encode(Doc) ->
bison@encoder:encode(Doc).
-spec decode(bitstring()) -> {ok, gleam@dict:dict(binary(), bison@bson:value())} |
{error, nil}.
decode(Binary) ->
bison@decoder:decode(Binary).
-spec strict_decode(
bitstring(),
fun((gleam@dynamic:dynamic_()) -> {ok, IET} |
{error, list(gleam@dynamic:decode_error())})
) -> {ok, IET} | {error, list(gleam@dynamic:decode_error())}.
strict_decode(Binary, Decoder) ->
gleam@result:then(
begin
_pipe = bison@decoder:decode(Binary),
gleam@result:replace_error(
_pipe,
[{decode_error, <<"BSON"/utf8>>, <<"bit array"/utf8>>, []}]
)
end,
fun(Doc) -> _pipe@1 = Doc,
_pipe@2 = gleam@dynamic:from(_pipe@1),
Decoder(_pipe@2) end
).