Skip to main content

src/tty@resolve_background.erl

-module(tty@resolve_background).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/tty/resolve_background.gleam").
-export([resolve_background/1]).

-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/tty/resolve_background.gleam", 32).
?DOC(false).
-spec classify_background(binary()) -> integer().
classify_background(Bg) ->
    case gleam_stdlib:parse_int(Bg) of
        {ok, Bg@1} when (Bg@1 >= 0) andalso (Bg@1 =< 6) ->
            1;

        {ok, 8} ->
            1;

        {ok, 7} ->
            2;

        {ok, Bg@2} when (Bg@2 >= 9) andalso (Bg@2 =< 15) ->
            2;

        _ ->
            0
    end.

-file("src/tty/resolve_background.gleam", 21).
?DOC(false).
-spec resolve_colorfgbg(binary()) -> integer().
resolve_colorfgbg(Value) ->
    case gleam@string:split(Value, <<";"/utf8>>) of
        [_ | Rest] ->
            case gleam@list:last(Rest) of
                {ok, Bg} ->
                    classify_background(gleam@string:trim(Bg));

                {error, nil} ->
                    0
            end;

        [] ->
            0
    end.

-file("src/tty/resolve_background.gleam", 11).
?DOC(false).
-spec resolve_background(fun((binary()) -> {ok, binary()} | {error, nil})) -> integer().
resolve_background(Env) ->
    case Env(<<"COLORFGBG"/utf8>>) of
        {ok, <<""/utf8>>} ->
            0;

        {error, _} ->
            0;

        {ok, Value} ->
            resolve_colorfgbg(Value)
    end.