Current section

Files

Jump to
gleam_bson src bson@binary.erl
Raw

src/bson@binary.erl

-module(bson@binary).
-compile(no_auto_import).
-export([to_string/1, to_bit_string/1, from_string/1, from_bit_string/1]).
-export_type([binary_/0]).
-opaque binary_() :: {generic, bitstring()}.
-spec to_string(binary_()) -> {ok, binary()} | {error, nil}.
to_string(Binary) ->
case Binary of
{generic, Data} ->
gleam@bit_string:to_string(Data)
end.
-spec to_bit_string(binary_()) -> bitstring().
to_bit_string(Binary) ->
case Binary of
{generic, Data} ->
Data
end.
-spec from_string(binary()) -> binary_().
from_string(Data) ->
{generic, gleam@bit_string:from_string(Data)}.
-spec from_bit_string(bitstring()) -> {ok, binary_()} | {error, nil}.
from_bit_string(Data) ->
case erlang:bit_size(Data) rem 8 of
0 ->
{ok, {generic, Data}};
_@1 ->
{error, nil}
end.