-module(olive@logging). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -define(FILEPATH, "src/olive/logging.gleam"). -export([get_logger/1, debug/2, notice/2, warning/2, error/2]). -export_type([logger/0, log_level/0]). -opaque logger() :: {logger, integer()}. -type log_level() :: none | error | warning | notice | debug. -file("src/olive/logging.gleam", 68). -spec get_formatted_msg(binary(), binary(), binary()) -> binary(). get_formatted_msg(Acc, Msg, Format) -> {New_line_prefix, Indent} = case Acc of <<""/utf8>> -> {<<""/utf8>>, <<" "/utf8>>}; _ -> {<<"\n"/utf8>>, <<" "/utf8>>} end, <<<<<>/binary, Indent/binary>>/binary, Msg/binary>>. -file("src/olive/logging.gleam", 47). -spec get_msg_format(log_level(), binary()) -> binary(). get_msg_format(Level, Msg) -> gleam@bool:guard(Level =:= none, <<""/utf8>>, fun() -> _pipe = Msg, _pipe@1 = gleam@string:split(_pipe, <<"\n"/utf8>>), gleam@list:fold( _pipe@1, <<""/utf8>>, fun(Acc, Msg@1) -> Formatted_msg = case Level of none -> <<""/utf8>>; error -> get_formatted_msg( Acc, Msg@1, <<"\x{001b}[31;1mOLIVE - ERROR:\x{001b}[0m"/utf8>> ); notice -> get_formatted_msg( Acc, Msg@1, <<"\x{001b}[32;1mOLIVE - NOTICE:\x{001b}[0m"/utf8>> ); warning -> get_formatted_msg( Acc, Msg@1, <<"\x{001b}[33;1mOLIVE - WARNING:\x{001b}[0m"/utf8>> ); debug -> get_formatted_msg( Acc, Msg@1, <<"\x{001b}[34;1mOLIVE - DEBUG:\x{001b}[0m"/utf8>> ) end, <> end ) end). -file("src/olive/logging.gleam", 76). -spec get_log_level_value(log_level()) -> integer(). get_log_level_value(Level) -> case Level of none -> 9000; error -> 100; warning -> 50; notice -> 10; debug -> 2 end. -file("src/olive/logging.gleam", 20). -spec get_logger(log_level()) -> logger(). get_logger(Level) -> {logger, get_log_level_value(Level)}. -file("src/olive/logging.gleam", 40). -spec log(logger(), log_level(), binary()) -> nil. log(Logger, Level, Msg) -> case gleam@int:compare( get_log_level_value(Level), erlang:element(2, Logger) ) of gt -> gleam_stdlib:println(get_msg_format(Level, Msg)); eq -> gleam_stdlib:println(get_msg_format(Level, Msg)); lt -> nil end. -file("src/olive/logging.gleam", 24). -spec debug(logger(), binary()) -> nil. debug(Logger, Msg) -> log(Logger, debug, Msg). -file("src/olive/logging.gleam", 28). -spec notice(logger(), binary()) -> nil. notice(Logger, Msg) -> log(Logger, notice, Msg). -file("src/olive/logging.gleam", 32). -spec warning(logger(), binary()) -> nil. warning(Logger, Msg) -> log(Logger, warning, Msg). -file("src/olive/logging.gleam", 36). -spec error(logger(), binary()) -> nil. error(Logger, Msg) -> log(Logger, error, Msg).