Packages
caffeine_lang
0.0.17
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@phase_1@parser@utils@general_common.erl
-module(caffeine_lang@phase_1@parser@utils@general_common).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/phase_1/parser/utils/general_common.gleam").
-export([string_to_accepted_type/1, extract_params_from_file_path/1]).
-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/phase_1/parser/utils/general_common.gleam", 10).
?DOC(" Converts a string to an accepted type.\n").
-spec string_to_accepted_type(binary()) -> {ok,
caffeine_lang@types@common@accepted_types:accepted_types()} |
{error, binary()}.
string_to_accepted_type(String_val) ->
case String_val of
<<"String"/utf8>> ->
{ok, string};
<<"Integer"/utf8>> ->
{ok, integer};
<<"Boolean"/utf8>> ->
{ok, boolean};
<<"Decimal"/utf8>> ->
{ok, decimal};
<<"NonEmptyList(String)"/utf8>> ->
{ok, {non_empty_list, string}};
<<"NonEmptyList(Integer)"/utf8>> ->
{ok, {non_empty_list, integer}};
<<"NonEmptyList(Boolean)"/utf8>> ->
{ok, {non_empty_list, boolean}};
<<"NonEmptyList(Decimal)"/utf8>> ->
{ok, {non_empty_list, decimal}};
<<"Optional(String)"/utf8>> ->
{ok, {optional, string}};
<<"Optional(Integer)"/utf8>> ->
{ok, {optional, integer}};
<<"Optional(Boolean)"/utf8>> ->
{ok, {optional, boolean}};
<<"Optional(Decimal)"/utf8>> ->
{ok, {optional, decimal}};
<<"Optional(NonEmptyList(String))"/utf8>> ->
{ok, {optional, {non_empty_list, string}}};
<<"Optional(NonEmptyList(Integer))"/utf8>> ->
{ok, {optional, {non_empty_list, integer}}};
<<"Optional(NonEmptyList(Boolean))"/utf8>> ->
{ok, {optional, {non_empty_list, boolean}}};
<<"Optional(NonEmptyList(Decimal))"/utf8>> ->
{ok, {optional, {non_empty_list, decimal}}};
_ ->
case gleam_stdlib:string_starts_with(
String_val,
<<"List(List("/utf8>>
) of
true ->
{error,
<<"Only one level of recursion is allowed for lists: "/utf8,
String_val/binary>>};
false ->
case gleam_stdlib:string_starts_with(
String_val,
<<"Optional(List(List("/utf8>>
) of
true ->
{error,
<<"Only one level of recursion is allowed for lists, even in optional: "/utf8,
String_val/binary>>};
false ->
{error,
<<<<"Unknown attribute type: "/utf8,
String_val/binary>>/binary,
". Supported: String, Integer, Boolean, Decimal, NonEmptyList(String), NonEmptyList(Integer), NonEmptyList(Boolean), NonEmptyList(Decimal), Optional(String), Optional(Integer), Optional(Boolean), Optional(Decimal), Optional(NonEmptyList(String)), Optional(NonEmptyList(Integer)), Optional(NonEmptyList(Boolean)), Optional(NonEmptyList(Decimal))"/utf8>>}
end
end
end.
-file("src/caffeine_lang/phase_1/parser/utils/general_common.gleam", 60).
?DOC(" Extracts team and service name parameters from the file path.\n").
-spec extract_params_from_file_path(binary()) -> {ok,
gleam@dict:dict(binary(), binary())} |
{error, binary()}.
extract_params_from_file_path(File_path) ->
gleam@result:'try'(
case begin
_pipe = File_path,
_pipe@1 = gleam@string:split(_pipe, <<"/"/utf8>>),
lists:reverse(_pipe@1)
end of
[File, Team | _] ->
{ok,
{Team,
gleam@string:replace(
File,
<<".yaml"/utf8>>,
<<""/utf8>>
)}};
_ ->
{error,
<<"Invalid file path: expected at least 'team/service.yaml'"/utf8>>}
end,
fun(_use0) ->
{Team_name, Service_name} = _use0,
Params = maps:from_list(
[{<<"team_name"/utf8>>, Team_name},
{<<"service_name"/utf8>>, Service_name}]
),
{ok, Params}
end
).