Current section

Files

Jump to
caffeine_lang src caffeine_lang@codegen@generator_utils.erl
Raw

src/caffeine_lang@codegen@generator_utils.erl

-module(caffeine_lang@codegen@generator_utils).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/codegen/generator_utils.gleam").
-export([dd_metric_safe/1, render_terraform_config/4, build_source_comment/1, render_resource_to_string/1, resolution_error/2]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-file("src/caffeine_lang/codegen/generator_utils.gleam", 35).
-spec is_dd_metric_char(binary()) -> boolean().
is_dd_metric_char(G) ->
case G of
<<"."/utf8>> ->
true;
<<"_"/utf8>> ->
true;
_ ->
case gleam@string:to_utf_codepoints(G) of
[Cp] ->
N = gleam_stdlib:identity(Cp),
(((N >= 48) andalso (N =< 57)) orelse ((N >= 65) andalso (N
=< 90)))
orelse ((N >= 97) andalso (N =< 122));
_ ->
false
end
end.
-file("src/caffeine_lang/codegen/generator_utils.gleam", 23).
?DOC(false).
-spec dd_metric_safe(binary()) -> binary().
dd_metric_safe(S) ->
_pipe = S,
_pipe@1 = gleam@string:to_graphemes(_pipe),
_pipe@2 = gleam@list:map(_pipe@1, fun(G) -> case is_dd_metric_char(G) of
true ->
G;
false ->
<<"_"/utf8>>
end end),
erlang:list_to_binary(_pipe@2).
-file("src/caffeine_lang/codegen/generator_utils.gleam", 63).
?DOC(false).
-spec render_terraform_config(
list(terra_madre@terraform:resource()),
terra_madre@terraform:terraform_settings(),
list(terra_madre@terraform:provider()),
list(terra_madre@terraform:variable())
) -> binary().
render_terraform_config(Resources, Settings, Providers, Variables) ->
Config = {config,
{some, Settings},
Providers,
Resources,
[],
Variables,
[],
[],
[]},
terra_madre@render:render_config(Config).
-file("src/caffeine_lang/codegen/generator_utils.gleam", 85).
?DOC(false).
-spec build_source_comment(
caffeine_lang@linker@ir:intermediate_representation_meta_data()
) -> binary().
build_source_comment(Metadata) ->
<<<<<<<<<<<<<<<<<<<<"# Caffeine: "/utf8,
(erlang:element(
2,
erlang:element(3, Metadata)
))/binary>>/binary,
"."/utf8>>/binary,
(erlang:element(
2,
erlang:element(6, Metadata)
))/binary>>/binary,
"."/utf8>>/binary,
(erlang:element(2, erlang:element(4, Metadata)))/binary>>/binary,
"."/utf8>>/binary,
(erlang:element(2, erlang:element(2, Metadata)))/binary>>/binary,
" (measurement: "/utf8>>/binary,
(erlang:element(2, erlang:element(5, Metadata)))/binary>>/binary,
")"/utf8>>.
-file("src/caffeine_lang/codegen/generator_utils.gleam", 103).
?DOC(false).
-spec render_resource_to_string(terra_madre@terraform:resource()) -> binary().
render_resource_to_string(Resource) ->
Config = {config, none, [], [Resource], [], [], [], [], []},
_pipe = terra_madre@render:render_config(Config),
codegen_ffi:drop_end_codeunits(_pipe, 1).
-file("src/caffeine_lang/codegen/generator_utils.gleam", 121).
?DOC(false).
-spec resolution_error(binary(), binary()) -> caffeine_lang@errors:compilation_error().
resolution_error(Vendor_name, Msg) ->
caffeine_lang@errors:generator_terraform_resolution_error(Vendor_name, Msg).