Packages

A library for reading Exif data in JPEG files.

Current section

Files

Jump to
glexif src glexif@internal@utils.erl
Raw

src/glexif@internal@utils.erl

-module(glexif@internal@utils).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([print_bit_array/1, hex_string_to_decimal/1, bit_array_to_decimal/1, trim_zero_bits/1, bit_array_reverse/1]).
-spec print_bit_array({ok, bitstring()} | {error, nil}) -> nil.
print_bit_array(Arr) ->
gleam@io:debug(gleam@bit_array:inspect(gleam@result:unwrap(Arr, <<>>))),
nil.
-spec hex_string_to_decimal(binary()) -> integer().
hex_string_to_decimal(Hex_string) ->
gleam@result:unwrap(gleam@int:base_parse(Hex_string, 16), 0).
-spec bit_array_to_decimal(bitstring()) -> integer().
bit_array_to_decimal(Arr) ->
_pipe = Arr,
_pipe@1 = binary:encode_hex(_pipe),
hex_string_to_decimal(_pipe@1).
-spec trim_trailing_zeros(bitstring()) -> bitstring().
trim_trailing_zeros(Str) ->
case gleam_stdlib:bit_array_slice(Str, erlang:byte_size(Str) - 1, 1) of
{ok, <<0>>} ->
_pipe = Str,
_pipe@1 = gleam_stdlib:bit_array_slice(
_pipe,
0,
erlang:byte_size(Str) - 1
),
_pipe@2 = gleam@result:unwrap(_pipe@1, <<>>),
trim_trailing_zeros(_pipe@2);
{ok, _} ->
Str;
_ ->
Str
end.
-spec trim_zero_bits(bitstring()) -> bitstring().
trim_zero_bits(Arr) ->
_pipe = Arr,
trim_trailing_zeros(_pipe).
-spec bit_array_reverse(bitstring()) -> bitstring().
bit_array_reverse(B) ->
case B of
<<A, B@1/bitstring>> ->
gleam_stdlib:bit_array_concat([bit_array_reverse(B@1), <<A>>]);
_ ->
<<>>
end.