-module(kryptos@internal@utils). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/kryptos/internal/utils.gleam"). -export([strip_leading_zeros/1, strip_trailing_zeros/1, pad_left/2]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. ?MODULEDOC(false). -file("src/kryptos/internal/utils.gleam", 8). ?DOC(false). -spec strip_leading_zeros(bitstring()) -> bitstring(). strip_leading_zeros(Bytes) -> case Bytes of <<16#00, Rest/bitstring>> -> case erlang:byte_size(Rest) > 0 of true -> strip_leading_zeros(Rest); false -> Bytes end; _ -> Bytes end. -file("src/kryptos/internal/utils.gleam", 29). ?DOC(false). -spec strip_trailing_zeros_loop(bitstring(), integer()) -> bitstring(). strip_trailing_zeros_loop(Data, Len) -> case Len of 0 -> <<>>; _ -> Last_byte@1 = case gleam_stdlib:bit_array_slice(Data, Len - 1, 1) of {ok, <>} -> Last_byte; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"kryptos/internal/utils"/utf8>>, function => <<"strip_trailing_zeros_loop"/utf8>>, line => 33, value => _assert_fail, start => 881, 'end' => 945, pattern_start => 892, pattern_end => 909}) end, case Last_byte@1 of 0 -> strip_trailing_zeros_loop(Data, Len - 1); _ -> Result@1 = case gleam_stdlib:bit_array_slice(Data, 0, Len) of {ok, Result} -> Result; _assert_fail@1 -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"kryptos/internal/utils"/utf8>>, function => <<"strip_trailing_zeros_loop"/utf8>>, line => 37, value => _assert_fail@1, start => 1048, 'end' => 1101, pattern_start => 1059, pattern_end => 1069}) end, Result@1 end end. -file("src/kryptos/internal/utils.gleam", 24). ?DOC(false). -spec strip_trailing_zeros(bitstring()) -> bitstring(). strip_trailing_zeros(Data) -> Len = erlang:byte_size(Data), strip_trailing_zeros_loop(Data, Len). -file("src/kryptos/internal/utils.gleam", 48). ?DOC(false). -spec pad_left(bitstring(), integer()) -> bitstring(). pad_left(Value, Size) -> Current_size = erlang:byte_size(Value), case Current_size >= Size of true -> Value; false -> Padding_size = Size - Current_size, Padding = begin _pipe = gleam@list:repeat(<<0>>, Padding_size), gleam_stdlib:bit_array_concat(_pipe) end, gleam_stdlib:bit_array_concat([Padding, Value]) end.