Packages
caffeine_lang
4.6.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@frontend@ast.erl
-module(caffeine_lang@frontend@ast).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/frontend/ast.gleam").
-export([promote_blueprints_file/1, promote_expects_file/1, extendable_kind_to_string/1, parsed_artifact_ref_to_string/1, build_type_alias_pairs/1, literal_to_string/1, value_to_string/1]).
-export_type([comment/0, parsed/0, validated/0, blueprints_file/1, type_alias/0, expects_file/1, extendable/0, extendable_kind/0, parsed_artifact_ref/0, blueprints_block/0, blueprint_item/0, expects_block/0, expect_item/0, struct/0, field/0, value/0, literal/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 comment() :: {line_comment, binary()} | {section_comment, binary()}.
-type parsed() :: any().
-type validated() :: any().
-type blueprints_file(JXT) :: {blueprints_file,
list(type_alias()),
list(extendable()),
list(blueprints_block()),
list(comment())} |
{gleam_phantom, JXT}.
-type type_alias() :: {type_alias,
binary(),
caffeine_lang@types:parsed_type(),
list(comment())}.
-type expects_file(JXU) :: {expects_file,
list(extendable()),
list(expects_block()),
list(comment())} |
{gleam_phantom, JXU}.
-type extendable() :: {extendable,
binary(),
extendable_kind(),
struct(),
list(comment())}.
-type extendable_kind() :: extendable_requires | extendable_provides.
-type parsed_artifact_ref() :: parsed_s_l_o | parsed_dependency_relations.
-type blueprints_block() :: {blueprints_block,
list(parsed_artifact_ref()),
list(blueprint_item()),
list(comment())}.
-type blueprint_item() :: {blueprint_item,
binary(),
list(binary()),
struct(),
struct(),
list(comment())}.
-type expects_block() :: {expects_block,
binary(),
list(expect_item()),
list(comment())}.
-type expect_item() :: {expect_item,
binary(),
list(binary()),
struct(),
list(comment())}.
-type struct() :: {struct, list(field()), list(comment())}.
-type field() :: {field, binary(), value(), list(comment())}.
-type value() :: {type_value, caffeine_lang@types:parsed_type()} |
{literal_value, literal()}.
-type literal() :: {literal_string, binary()} |
{literal_integer, integer()} |
{literal_float, float()} |
{literal_percentage, float()} |
literal_true |
literal_false |
{literal_list, list(literal())} |
{literal_struct, list(field()), list(comment())}.
-file("src/caffeine_lang/frontend/ast.gleam", 60).
?DOC(false).
-spec promote_blueprints_file(blueprints_file(any())) -> blueprints_file(any()).
promote_blueprints_file(File) ->
{blueprints_file,
erlang:element(2, File),
erlang:element(3, File),
erlang:element(4, File),
erlang:element(5, File)}.
-file("src/caffeine_lang/frontend/ast.gleam", 73).
?DOC(false).
-spec promote_expects_file(expects_file(any())) -> expects_file(any()).
promote_expects_file(File) ->
{expects_file,
erlang:element(2, File),
erlang:element(3, File),
erlang:element(4, File)}.
-file("src/caffeine_lang/frontend/ast.gleam", 103).
?DOC(false).
-spec extendable_kind_to_string(extendable_kind()) -> binary().
extendable_kind_to_string(Kind) ->
case Kind of
extendable_requires ->
<<"Requires"/utf8>>;
extendable_provides ->
<<"Provides"/utf8>>
end.
-file("src/caffeine_lang/frontend/ast.gleam", 122).
?DOC(false).
-spec parsed_artifact_ref_to_string(parsed_artifact_ref()) -> binary().
parsed_artifact_ref_to_string(Ref) ->
case Ref of
parsed_s_l_o ->
<<"SLO"/utf8>>;
parsed_dependency_relations ->
<<"DependencyRelations"/utf8>>
end.
-file("src/caffeine_lang/frontend/ast.gleam", 215).
?DOC(false).
-spec build_type_alias_pairs(list(type_alias())) -> list({binary(),
caffeine_lang@types:parsed_type()}).
build_type_alias_pairs(Type_aliases) ->
gleam@list:map(
Type_aliases,
fun(Ta) -> {erlang:element(2, Ta), erlang:element(3, Ta)} end
).
-file("src/caffeine_lang/frontend/ast.gleam", 232).
?DOC(false).
-spec literal_to_string(literal()) -> binary().
literal_to_string(Lit) ->
case Lit of
{literal_string, S} ->
<<<<"\""/utf8, S/binary>>/binary, "\""/utf8>>;
{literal_integer, N} ->
gleam@string:inspect(N);
{literal_float, F} ->
gleam@string:inspect(F);
{literal_percentage, F@1} ->
<<(gleam@string:inspect(F@1))/binary, "%"/utf8>>;
literal_true ->
<<"true"/utf8>>;
literal_false ->
<<"false"/utf8>>;
{literal_list, _} ->
<<"[...]"/utf8>>;
{literal_struct, _, _} ->
<<"{...}"/utf8>>
end.
-file("src/caffeine_lang/frontend/ast.gleam", 223).
?DOC(false).
-spec value_to_string(value()) -> binary().
value_to_string(Value) ->
case Value of
{type_value, T} ->
caffeine_lang@types:parsed_type_to_string(T);
{literal_value, Lit} ->
literal_to_string(Lit)
end.