Packages
caffeine_lang
1.0.2
6.3.1
6.3.0
6.2.2
6.2.1
6.2.0
6.1.2
6.1.1
6.1.0
6.0.0
5.6.0
5.5.0
5.4.4
5.4.3
5.4.2
5.4.1
5.4.0
5.3.0
5.2.0
5.1.1
5.1.0
5.0.12
5.0.11
5.0.10
5.0.8
5.0.7
5.0.6
5.0.5
5.0.4
5.0.1
5.0.0
4.10.0
4.9.0
4.8.3
4.8.2
4.8.1
4.8.0
4.7.9
4.7.8
4.7.7
4.7.6
4.7.5
4.6.7
4.6.6
4.6.5
4.6.4
4.6.3
4.6.2
4.6.0
4.5.1
4.5.0
4.4.4
4.4.3
4.4.1
4.4.0
4.3.7
4.3.6
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.0.2
1.0.1
0.1.0
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.2
0.0.1
A compiler for generating reliability artifacts from service expectation definitions.
Current section
Files
Jump to
Current section
Files
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, result_try/2, map_reference_to_referrer_over_collection/4]).
-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", 13).
?DOC(" Reads the contents of a JSON file as a string.\n").
-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", 25).
?DOC(
" A helper for chaining Result operations with the `use` syntax.\n"
" Equivalent to `result.try` but defined here for convenient use with `use`.\n"
).
-spec result_try(
{ok, FRJ} | {error, FRK},
fun((FRJ) -> {ok, FRN} | {error, FRK})
) -> {ok, FRN} | {error, FRK}.
result_try(Result, Next) ->
case Result of
{ok, Value} ->
Next(Value);
{error, Err} ->
{error, Err}
end.
-file("src/caffeine_lang/common/helpers.gleam", 37).
?DOC(
" Maps each referrer to its corresponding reference by matching names.\n"
" Returns a list of tuples pairing each referrer with its matched reference.\n"
).
-spec map_reference_to_referrer_over_collection(
list(FRS),
list(FRU),
fun((FRS) -> binary()),
fun((FRU) -> binary())
) -> list({FRU, FRS}).
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 => 46,
value => _assert_fail,
start => 1510,
'end' => 1697,
pattern_start => 1521,
pattern_end => 1534})
end,
{Referrer, Reference@2}
end
).