Packages
gleam_bson
0.9.0
0.27.0
retired
0.26.0
retired
0.25.0
retired
0.24.0
retired
0.23.0
retired
0.22.0
retired
0.21.0
retired
0.20.0
retired
0.19.0
retired
0.18.0
retired
0.17.0
retired
0.16.0
retired
0.15.0
retired
0.14.0
retired
0.13.0
retired
0.12.0
retired
0.11.0
retired
0.10.1
retired
0.10.0
retired
0.9.0
retired
0.8.0
retired
0.7.0
retired
0.6.0
retired
0.5.0
retired
0.4.0
retired
0.3.0
retired
0.2.0
retired
0.1.0
retired
bson encoder and decoder for gleam
Retired package: Renamed - Republished as bison
Current section
Files
Jump to
Current section
Files
src/bson@binary.erl
-module(bson@binary).
-compile(no_auto_import).
-export([to_string/1, to_int_list/1, to_bit_string/1, from_string/1, from_int_list/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_int_list(binary_()) -> list(integer()).
to_int_list(Binary) ->
case Binary of
{generic, Data} ->
_pipe = Data,
to_int_list_internal(_pipe, [])
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_int_list(list(integer())) -> binary_().
from_int_list(Data) ->
{generic,
begin
_pipe = Data,
gleam@list:fold(
_pipe,
<<>>,
fun(Acc, Code) ->
_pipe@1 = Acc,
gleam@bit_string:append(_pipe@1, <<Code>>)
end
)
end}.
-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.
-spec to_int_list_internal(bitstring(), list(integer())) -> list(integer()).
to_int_list_internal(Remaining, Storage) ->
<<Num:8, Remaining@1/binary>> = Remaining,
New_storage = begin
_pipe = Storage,
gleam@list:append(_pipe, [Num])
end,
case gleam@bit_string:byte_size(Remaining@1) =:= 0 of
true ->
New_storage;
false ->
to_int_list_internal(Remaining@1, New_storage)
end.