Current section

Files

Jump to
caffeine_lang src caffeine_lang@common@helpers.erl
Raw

src/caffeine_lang@common@helpers.erl

-module(caffeine_lang@common@helpers).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/common/helpers.gleam").
-export([json_from_file/1, map_reference_to_referrer_over_collection/4, extract_value/3]).
-export_type([value_tuple/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-type value_tuple() :: {value_tuple,
binary(),
caffeine_lang@common@accepted_types:accepted_types(),
gleam@dynamic:dynamic_()}.
-file("src/caffeine_lang/common/helpers.gleam", 16).
?DOC(false).
-spec json_from_file(binary()) -> {ok, binary()} |
{error, caffeine_lang@common@errors:compilation_error()}.
json_from_file(File_path) ->
case simplifile:read(File_path) of
{ok, File_contents} ->
{ok, File_contents};
{error, Err} ->
{error,
{parser_file_read_error,
<<<<<<(simplifile:describe_error(Err))/binary, " ("/utf8>>/binary,
File_path/binary>>/binary,
")"/utf8>>}}
end.
-file("src/caffeine_lang/common/helpers.gleam", 29).
?DOC(false).
-spec map_reference_to_referrer_over_collection(
list(GQP),
list(GQR),
fun((GQP) -> binary()),
fun((GQR) -> binary())
) -> list({GQR, GQP}).
map_reference_to_referrer_over_collection(
References,
Referrers,
Reference_name,
Referrer_reference
) ->
_pipe = Referrers,
gleam@list:map(
_pipe,
fun(Referrer) ->
Reference@2 = case begin
_pipe@1 = References,
_pipe@4 = gleam@list:filter(
_pipe@1,
fun(Reference) ->
begin
_pipe@2 = Reference,
Reference_name(_pipe@2)
end
=:= begin
_pipe@3 = Referrer,
Referrer_reference(_pipe@3)
end
end
),
gleam@list:first(_pipe@4)
end of
{ok, Reference@1} -> Reference@1;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"caffeine_lang/common/helpers"/utf8>>,
function => <<"map_reference_to_referrer_over_collection"/utf8>>,
line => 38,
value => _assert_fail,
start => 1244,
'end' => 1431,
pattern_start => 1255,
pattern_end => 1268})
end,
{Referrer, Reference@2}
end
).
-file("src/caffeine_lang/common/helpers.gleam", 49).
?DOC(" Extract a value from a list of ValueTuple by label using the provided decoder.\n").
-spec extract_value(
list(value_tuple()),
binary(),
gleam@dynamic@decode:decoder(GQV)
) -> {ok, GQV} | {error, nil}.
extract_value(Values, Label, Decoder) ->
_pipe = Values,
_pipe@1 = gleam@list:find(
_pipe,
fun(Vt) -> erlang:element(2, Vt) =:= Label end
),
gleam@result:'try'(
_pipe@1,
fun(Vt@1) ->
_pipe@2 = gleam@dynamic@decode:run(erlang:element(4, Vt@1), Decoder),
gleam@result:replace_error(_pipe@2, nil)
end
).