src/qrkit@internal@util.erl

-module(qrkit@internal@util).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/qrkit/internal/util.gleam").
-export([range/2, reverse_range/2, at/2, at_or/3, replace_at/3, repeat/2, characters/1, join/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/qrkit/internal/util.gleam", 6).
?DOC(false).
-spec range(integer(), integer()) -> list(integer()).
range(Start, Stop) ->
    case Start > Stop of
        true ->
            [];

        false ->
            [Start | range(Start + 1, Stop)]
    end.

-file("src/qrkit/internal/util.gleam", 13).
?DOC(false).
-spec reverse_range(integer(), integer()) -> list(integer()).
reverse_range(Start, Stop) ->
    case Start < Stop of
        true ->
            [];

        false ->
            [Start | reverse_range(Start - 1, Stop)]
    end.

-file("src/qrkit/internal/util.gleam", 20).
?DOC(false).
-spec at(list(DLT), integer()) -> {ok, DLT} | {error, nil}.
at(List, Index) ->
    case {List, Index} of
        {_, I} when I < 0 ->
            {error, nil};

        {[First | _], 0} ->
            {ok, First};

        {[_ | Rest], I@1} ->
            at(Rest, I@1 - 1);

        {[], _} ->
            {error, nil}
    end.

-file("src/qrkit/internal/util.gleam", 29).
?DOC(false).
-spec at_or(list(DLX), integer(), DLX) -> DLX.
at_or(List, Index, Default) ->
    case at(List, Index) of
        {ok, Value} ->
            Value;

        {error, _} ->
            Default
    end.

-file("src/qrkit/internal/util.gleam", 36).
?DOC(false).
-spec replace_at(list(DLZ), integer(), DLZ) -> list(DLZ).
replace_at(List, Index, Replacement) ->
    case {List, Index} of
        {[], _} ->
            [];

        {[_ | Rest], 0} ->
            [Replacement | Rest];

        {[First | Rest@1], I} ->
            [First | replace_at(Rest@1, I - 1, Replacement)]
    end.

-file("src/qrkit/internal/util.gleam", 44).
?DOC(false).
-spec repeat(DMC, integer()) -> list(DMC).
repeat(Value, Count) ->
    gleam@list:repeat(Value, Count).

-file("src/qrkit/internal/util.gleam", 48).
?DOC(false).
-spec characters(binary()) -> list(binary()).
characters(Text) ->
    _pipe = Text,
    _pipe@1 = gleam@string:to_utf_codepoints(_pipe),
    gleam@list:map(
        _pipe@1,
        fun(Codepoint) ->
            gleam_stdlib:utf_codepoint_list_to_string([Codepoint])
        end
    ).

-file("src/qrkit/internal/util.gleam", 54).
?DOC(false).
-spec join(list(binary()), binary()) -> binary().
join(Strings, Separator) ->
    gleam@string:join(Strings, Separator).