Packages
caffeine_lang
0.0.13
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@cql@generator.erl
-module(caffeine_lang@cql@generator).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/cql/generator.gleam").
-export([operator_to_datadog_query/1, generate_datadog_query/1]).
-file("src/caffeine_lang/cql/generator.gleam", 96).
-spec operator_precedence(caffeine_lang@cql@parser:operator()) -> integer().
operator_precedence(Op) ->
case Op of
add ->
1;
sub ->
1;
mul ->
2;
'div' ->
2
end.
-file("src/caffeine_lang/cql/generator.gleam", 90).
-spec needs_parentheses(
caffeine_lang@cql@parser:operator(),
caffeine_lang@cql@parser:operator()
) -> boolean().
needs_parentheses(Inner_op, Parent_op) ->
Inner_prec = operator_precedence(Inner_op),
Parent_prec = operator_precedence(Parent_op),
Inner_prec < Parent_prec.
-file("src/caffeine_lang/cql/generator.gleam", 103).
-spec operator_to_datadog_query(caffeine_lang@cql@parser:operator()) -> binary().
operator_to_datadog_query(Operator) ->
case Operator of
add ->
<<"+"/utf8>>;
sub ->
<<"-"/utf8>>;
mul ->
<<"*"/utf8>>;
'div' ->
<<"/"/utf8>>
end.
-file("src/caffeine_lang/cql/generator.gleam", 68).
-spec primary_to_string(
caffeine_lang@cql@parser:primary(),
gleam@option:option(caffeine_lang@cql@parser:operator())
) -> binary().
primary_to_string(Primary, Parent_op) ->
case Primary of
{primary_word, Word} ->
erlang:element(2, Word);
{primary_exp, Exp} ->
Needs_parens = case {Exp, Parent_op} of
{_, none} ->
false;
{{primary, _}, _} ->
false;
{{operator_expr, _, _, Inner_op}, {some, Parent}} ->
needs_parentheses(Inner_op, Parent)
end,
case Needs_parens of
true ->
<<<<"("/utf8, (exp_to_string(Exp))/binary>>/binary,
")"/utf8>>;
false ->
exp_to_string(Exp)
end
end.
-file("src/caffeine_lang/cql/generator.gleam", 40).
-spec exp_to_string(caffeine_lang@cql@parser:exp()) -> binary().
exp_to_string(Exp) ->
case Exp of
{primary, Primary} ->
primary_to_string(Primary, none);
{operator_expr, Numerator, Denominator, Operator} ->
<<<<<<<<(exp_to_string_with_context(
Numerator,
{some, Operator},
true
))/binary,
" "/utf8>>/binary,
(operator_to_datadog_query(Operator))/binary>>/binary,
" "/utf8>>/binary,
(exp_to_string_with_context(
Denominator,
{some, Operator},
false
))/binary>>
end.
-file("src/caffeine_lang/cql/generator.gleam", 24).
-spec numerator_exp_to_datadog_query(caffeine_lang@cql@parser:exp()) -> binary().
numerator_exp_to_datadog_query(Exp) ->
case Exp of
{primary, {primary_exp, Exp@1}} ->
exp_to_string(Exp@1);
_ ->
exp_to_string(Exp)
end.
-file("src/caffeine_lang/cql/generator.gleam", 32).
-spec denominator_exp_to_datadog_query(caffeine_lang@cql@parser:exp()) -> binary().
denominator_exp_to_datadog_query(Exp) ->
case Exp of
{primary, {primary_exp, Exp@1}} ->
exp_to_string(Exp@1);
_ ->
exp_to_string(Exp)
end.
-file("src/caffeine_lang/cql/generator.gleam", 9).
-spec generate_datadog_query(caffeine_lang@cql@resolver:primitives()) -> binary().
generate_datadog_query(Primitive) ->
case Primitive of
{good_over_total, Numerator, Denominator} ->
<<<<<<<<<<<<<<"query {\n"/utf8, " numerator = \""/utf8>>/binary,
(numerator_exp_to_datadog_query(Numerator))/binary>>/binary,
"\"\n"/utf8>>/binary,
" denominator = \""/utf8>>/binary,
(denominator_exp_to_datadog_query(Denominator))/binary>>/binary,
"\"\n"/utf8>>/binary,
" }\n"/utf8>>
end.
-file("src/caffeine_lang/cql/generator.gleam", 52).
-spec exp_to_string_with_context(
caffeine_lang@cql@parser:exp(),
gleam@option:option(caffeine_lang@cql@parser:operator()),
boolean()
) -> binary().
exp_to_string_with_context(Exp, Parent_op, _) ->
case Exp of
{primary, Primary} ->
primary_to_string(Primary, Parent_op);
{operator_expr, Numerator, Denominator, Operator} ->
<<<<<<<<(exp_to_string_with_context(
Numerator,
{some, Operator},
true
))/binary,
" "/utf8>>/binary,
(operator_to_datadog_query(Operator))/binary>>/binary,
" "/utf8>>/binary,
(exp_to_string_with_context(
Denominator,
{some, Operator},
false
))/binary>>
end.