Packages
caffeine_lang
4.4.3
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@linker@ir.erl
-module(caffeine_lang@linker@ir).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/linker/ir.gleam").
-export([ir_to_identifier/1, get_slo_fields/1, get_dependency_fields/1, slo_only/1, dependency_only/1, slo_with_dependency/2, update_slo_fields/2]).
-export_type([slo_fields/0, dependency_fields/0, artifact_data/0, artifact_fields/0, intermediate_representation/0, intermediate_representation_meta_data/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 slo_fields() :: {slo_fields,
float(),
gleam@dict:dict(binary(), binary()),
integer(),
gleam@option:option(binary()),
list({binary(), binary()}),
gleam@option:option(binary())}.
-type dependency_fields() :: {dependency_fields,
gleam@dict:dict(caffeine_lang@linker@artifacts:dependency_relation_type(), list(binary())),
list({binary(), binary()})}.
-type artifact_data() :: {artifact_data,
gleam@dict:dict(caffeine_lang@linker@artifacts:artifact_type(), artifact_fields())}.
-type artifact_fields() :: {slo_artifact_fields, slo_fields()} |
{dependency_artifact_fields, dependency_fields()}.
-type intermediate_representation() :: {intermediate_representation,
intermediate_representation_meta_data(),
binary(),
list(caffeine_lang@linker@artifacts:artifact_type()),
list(caffeine_lang@helpers:value_tuple()),
artifact_data(),
gleam@option:option(caffeine_lang@analysis@vendor:vendor())}.
-type intermediate_representation_meta_data() :: {intermediate_representation_meta_data,
binary(),
binary(),
binary(),
binary(),
binary(),
gleam@dict:dict(binary(), list(binary()))}.
-file("src/caffeine_lang/linker/ir.gleam", 69).
?DOC(false).
-spec ir_to_identifier(intermediate_representation()) -> binary().
ir_to_identifier(Ir) ->
<<<<<<<<<<<<(erlang:element(3, erlang:element(2, Ir)))/binary, "."/utf8>>/binary,
(erlang:element(6, erlang:element(2, Ir)))/binary>>/binary,
"."/utf8>>/binary,
(erlang:element(4, erlang:element(2, Ir)))/binary>>/binary,
"."/utf8>>/binary,
(erlang:element(2, erlang:element(2, Ir)))/binary>>.
-file("src/caffeine_lang/linker/ir.gleam", 81).
?DOC(false).
-spec get_slo_fields(artifact_data()) -> gleam@option:option(slo_fields()).
get_slo_fields(Data) ->
case gleam_stdlib:map_get(erlang:element(2, Data), s_l_o) of
{ok, {slo_artifact_fields, Slo}} ->
{some, Slo};
_ ->
none
end.
-file("src/caffeine_lang/linker/ir.gleam", 90).
?DOC(false).
-spec get_dependency_fields(artifact_data()) -> gleam@option:option(dependency_fields()).
get_dependency_fields(Data) ->
case gleam_stdlib:map_get(erlang:element(2, Data), dependency_relations) of
{ok, {dependency_artifact_fields, Dep}} ->
{some, Dep};
_ ->
none
end.
-file("src/caffeine_lang/linker/ir.gleam", 99).
?DOC(false).
-spec slo_only(slo_fields()) -> artifact_data().
slo_only(Slo) ->
{artifact_data, maps:from_list([{s_l_o, {slo_artifact_fields, Slo}}])}.
-file("src/caffeine_lang/linker/ir.gleam", 105).
?DOC(false).
-spec dependency_only(dependency_fields()) -> artifact_data().
dependency_only(Dep) ->
{artifact_data,
maps:from_list(
[{dependency_relations, {dependency_artifact_fields, Dep}}]
)}.
-file("src/caffeine_lang/linker/ir.gleam", 115).
?DOC(false).
-spec slo_with_dependency(slo_fields(), dependency_fields()) -> artifact_data().
slo_with_dependency(Slo, Dep) ->
{artifact_data,
maps:from_list(
[{s_l_o, {slo_artifact_fields, Slo}},
{dependency_relations, {dependency_artifact_fields, Dep}}]
)}.
-file("src/caffeine_lang/linker/ir.gleam", 129).
?DOC(false).
-spec update_slo_fields(artifact_data(), fun((slo_fields()) -> slo_fields())) -> artifact_data().
update_slo_fields(Data, Updater) ->
case gleam_stdlib:map_get(erlang:element(2, Data), s_l_o) of
{ok, {slo_artifact_fields, Slo}} ->
{artifact_data,
gleam@dict:insert(
erlang:element(2, Data),
s_l_o,
{slo_artifact_fields, Updater(Slo)}
)};
_ ->
Data
end.