Current section
Files
Jump to
Current section
Files
src/gleamgen@expression.erl
-module(gleamgen@expression).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/gleamgen/expression.gleam").
-export([int/1, float/1, string/1, bool/1, nil/0, raw/1, raw_doc/1, raw_of_type/2, concat_string/2, todo_/1, panic_/1, assert_/2, math_operator/3, math_operator_float/3, comparison/3, comparison_float/3, call_dynamic/2, new_block/2, new_case/4, new_anonymous_function/2, type_/1, to_dynamic/1, list/1, list_prepend/2, tuple1/1, equals/2, not_equals/2, tuple2/2, tuple3/3, tuple4/4, tuple5/5, tuple6/6, tuple7/7, tuple8/8, tuple9/9, echo_/2, ok/1, error/1, call0/1, call1/2, call2/3, call3/4, call4/5, call5/6, call6/7, call7/8, call8/9, call9/10, construct0/1, update_or_create_block/2, add_to_or_create_block/2, new_use/3, with_render_config/2, coerce_dynamic_unsafe/1, render/2, render_statement/2]).
-export_type([expression/1, internal_expression/1, math_operator/0, comparison/0, statement/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.
-opaque expression(HNN) :: {expression,
internal_expression(HNN),
gleamgen@types:generated_type(HNN)}.
-type internal_expression(HNO) :: {int_literal, integer()} |
{float_literal, float()} |
{str_literal, binary()} |
{bool_literal, boolean()} |
nil_literal |
{list_literal,
list(expression(gleamgen@types:dynamic_())),
gleam@option:option(expression(gleamgen@types:dynamic_()))} |
{equals,
expression(gleamgen@types:dynamic_()),
expression(gleamgen@types:dynamic_())} |
{not_equals,
expression(gleamgen@types:dynamic_()),
expression(gleamgen@types:dynamic_())} |
{tuple_literal, list(expression(gleamgen@types:dynamic_()))} |
{ident, binary()} |
{raw_doc, glam@doc:document()} |
{todo, gleam@option:option(binary())} |
{panic, gleam@option:option(binary())} |
{echo, expression(gleamgen@types:dynamic_()), gleam@option:option(binary())} |
{assert, expression(boolean()), gleam@option:option(binary())} |
{math_operator,
expression(integer()),
math_operator(),
expression(integer())} |
{math_operator_float,
expression(float()),
math_operator(),
expression(float())} |
{comparison, expression(integer()), comparison(), expression(integer())} |
{comparison_float, expression(float()), comparison(), expression(float())} |
{concat_string, expression(binary()), expression(binary())} |
{call,
expression(gleamgen@types:dynamic_()),
list(expression(gleamgen@types:dynamic_()))} |
{single_constructor, expression(gleamgen@types:dynamic_())} |
{block, list(statement())} |
{'case',
expression(gleamgen@types:dynamic_()),
fun((gleamgen@internal@render:context()) -> list(fun((integer()) -> gleamgen@internal@render:rendered()))),
boolean()} |
{anonymous_function,
fun((gleamgen@internal@render:context()) -> gleamgen@internal@render:rendered())} |
{use,
expression(gleamgen@types:dynamic_()),
list(expression(gleamgen@types:dynamic_())),
list(binary())} |
{with_config,
expression(gleamgen@types:dynamic_()),
gleamgen@render@config:config()} |
{gleam_phantom, HNO}.
-type math_operator() :: add | sub | mul | 'div'.
-type comparison() :: greater_than |
greater_than_or_equal |
less_than |
less_than_or_equal.
-type statement() :: {let_declaration,
binary(),
expression(gleamgen@types:dynamic_()),
boolean()} |
{expression_statement, expression(gleamgen@types:dynamic_())} |
{comment, list(binary())} |
linebreak.
-file("src/gleamgen/expression.gleam", 64).
-spec int(integer()) -> expression(integer()).
int(Value) ->
{expression, {int_literal, Value}, generated_int}.
-file("src/gleamgen/expression.gleam", 68).
-spec float(float()) -> expression(float()).
float(Value) ->
{expression, {float_literal, Value}, generated_float}.
-file("src/gleamgen/expression.gleam", 72).
-spec string(binary()) -> expression(binary()).
string(Value) ->
{expression, {str_literal, Value}, generated_string}.
-file("src/gleamgen/expression.gleam", 76).
-spec bool(boolean()) -> expression(boolean()).
bool(Value) ->
{expression, {bool_literal, Value}, generated_bool}.
-file("src/gleamgen/expression.gleam", 80).
-spec nil() -> expression(nil).
nil() ->
{expression, nil_literal, generated_nil}.
-file("src/gleamgen/expression.gleam", 333).
?DOC(" Provide an ident that could be of any type\n").
-spec raw(binary()) -> expression(any()).
raw(Value) ->
{expression, {ident, Value}, gleamgen@types:dynamic()}.
-file("src/gleamgen/expression.gleam", 338).
?DOC(false).
-spec raw_doc(glam@doc:document()) -> expression(any()).
raw_doc(Value) ->
{expression, {raw_doc, Value}, gleamgen@types:dynamic()}.
-file("src/gleamgen/expression.gleam", 343).
?DOC(" Provide a string to inject without any checking of the specified type\n").
-spec raw_of_type(binary(), gleamgen@types:generated_type(HSN)) -> expression(HSN).
raw_of_type(Value, Type_) ->
{expression, {ident, Value}, Type_}.
-file("src/gleamgen/expression.gleam", 357).
?DOC(
" Use the <> operator to concatenate two strings\n"
" ```gleam\n"
" expression.concat_string(expression.string(\"hello \"), expression.string(\"world\"))\n"
" |> expression.render(render.default_context())\n"
" |> render.to_string()\n"
" // -> \"\\\"hello \\\" <> \\\"world\\\"\"\n"
" ```\n"
).
-spec concat_string(expression(binary()), expression(binary())) -> expression(binary()).
concat_string(Expr1, Expr2) ->
{expression, {concat_string, Expr1, Expr2}, generated_string}.
-file("src/gleamgen/expression.gleam", 371).
?DOC(
" Create a todo expression with an optional as clause\n"
" ```gleam\n"
" expression.todo_(option.Some(\"some unimplemented thing\"))\n"
" |> expression.render(render.default_context())\n"
" |> render.to_string()\n"
" // -> \"todo as \\\"some unimplemented thing\\\"\"\n"
" ```\n"
).
-spec todo_(gleam@option:option(binary())) -> expression(any()).
todo_(As_string) ->
{expression, {todo, As_string}, gleamgen@types:dynamic()}.
-file("src/gleamgen/expression.gleam", 382).
?DOC(
" Create a panic expression with an optional as clause\n"
" ```gleam\n"
" expression.todo_(option.Some(\"ahhhhhh!!!\"))\n"
" |> expression.render(render.default_context())\n"
" |> render.to_string()\n"
" // -> \"panic as \\\"ahhhhhh!!!\\\"\"\n"
" ```\n"
).
-spec panic_(gleam@option:option(binary())) -> expression(any()).
panic_(As_string) ->
{expression, {panic, As_string}, gleamgen@types:dynamic()}.
-file("src/gleamgen/expression.gleam", 387).
?DOC(" Create an assert expression with an optional as clause\n").
-spec assert_(expression(boolean()), gleam@option:option(binary())) -> expression(nil).
assert_(Condition, As_string) ->
{expression, {assert, Condition, As_string}, generated_nil}.
-file("src/gleamgen/expression.gleam", 437).
?DOC(
" Apply a math operator to two expressions with the type of Int\n"
" ```gleam\n"
" expression.math_operator(expression.int(3), expression.Add, expression.int(5))\n"
" |> expression.render(render.default_context())\n"
" |> render.to_string()\n"
" // -> \"3 + 5\"\n"
" ```\n"
).
-spec math_operator(
expression(integer()),
math_operator(),
expression(integer())
) -> expression(integer()).
math_operator(Expr1, Op, Expr2) ->
{expression, {math_operator, Expr1, Op, Expr2}, generated_int}.
-file("src/gleamgen/expression.gleam", 456).
?DOC(
" Apply a math operator to two expressions with the type of Float\n"
" ```gleam\n"
" expression.math_operator_float(\n"
" expression.float(3.3),\n"
" expression.Sub,\n"
" expression.unchecked_ident(\"other_float\")\n"
" )\n"
" |> expression.render(render.default_context())\n"
" |> render.to_string()\n"
" // -> \"3.3 -. other_float\"\n"
" ```\n"
).
-spec math_operator_float(
expression(float()),
math_operator(),
expression(float())
) -> expression(integer()).
math_operator_float(Expr1, Op, Expr2) ->
{expression, {math_operator_float, Expr1, Op, Expr2}, generated_int}.
-file("src/gleamgen/expression.gleam", 464).
-spec comparison(expression(integer()), comparison(), expression(integer())) -> expression(boolean()).
comparison(Expr1, Operator, Expr2) ->
{expression, {comparison, Expr1, Operator, Expr2}, generated_bool}.
-file("src/gleamgen/expression.gleam", 472).
-spec comparison_float(expression(float()), comparison(), expression(float())) -> expression(boolean()).
comparison_float(Expr1, Operator, Expr2) ->
{expression, {comparison_float, Expr1, Operator, Expr2}, generated_bool}.
-file("src/gleamgen/expression.gleam", 697).
?DOC(" Call a function or constructor without type checking\n").
-spec call_dynamic(
expression(gleamgen@types:dynamic_()),
list(expression(gleamgen@types:dynamic_()))
) -> expression(gleamgen@types:dynamic_()).
call_dynamic(Func, Args) ->
{expression, {call, Func, Args}, gleamgen@types:dynamic()}.
-file("src/gleamgen/expression.gleam", 730).
?DOC(false).
-spec new_block(list(statement()), gleamgen@types:generated_type(HZD)) -> expression(HZD).
new_block(Expressions, Return) ->
{expression, {block, Expressions}, Return}.
-file("src/gleamgen/expression.gleam", 782).
?DOC(false).
-spec new_case(
expression(gleamgen@types:dynamic_()),
fun((gleamgen@internal@render:context()) -> list(fun((integer()) -> gleamgen@internal@render:rendered()))),
boolean(),
gleamgen@types:generated_type(HZW)
) -> expression(HZW).
new_case(To_match_on, Patterns, All_can_match_on_multiple, Return) ->
{expression,
{'case', To_match_on, Patterns, All_can_match_on_multiple},
Return}.
-file("src/gleamgen/expression.gleam", 795).
?DOC(false).
-spec new_anonymous_function(
fun((gleamgen@internal@render:context()) -> gleamgen@internal@render:rendered()),
gleamgen@types:generated_type(HZY)
) -> expression(HZY).
new_anonymous_function(Function, Return) ->
{expression, {anonymous_function, Function}, Return}.
-file("src/gleamgen/expression.gleam", 803).
?DOC(" Get the internal type of an expression\n").
-spec type_(expression(IAB)) -> gleamgen@types:generated_type(IAB).
type_(Expr) ->
erlang:element(3, Expr).
-file("src/gleamgen/expression.gleam", 823).
-spec to_dynamic(expression(any())) -> expression(gleamgen@types:dynamic_()).
to_dynamic(Type_) ->
gleamgen_ffi:identity(Type_).
-file("src/gleamgen/expression.gleam", 84).
-spec list(list(expression(HNU))) -> expression(list(HNU)).
list(Value) ->
{expression,
{list_literal,
begin
_pipe = Value,
gleam@list:map(_pipe, fun gleamgen_ffi:identity/1)
end,
none},
begin
_pipe@1 = Value,
_pipe@2 = gleam@list:first(_pipe@1),
_pipe@3 = gleam@result:map(_pipe@2, fun type_/1),
_pipe@4 = gleam@result:lazy_unwrap(
_pipe@3,
fun() -> gleamgen@types:dynamic() end
),
gleamgen@types:list(_pipe@4)
end}.
-file("src/gleamgen/expression.gleam", 96).
?DOC(" Prepend value(s) to list using [value, ..original] syntax\n").
-spec list_prepend(list(expression(HNZ)), expression(list(HNZ))) -> expression(list(HNZ)).
list_prepend(Prepending, Original) ->
{expression,
{list_literal,
begin
_pipe = Prepending,
gleam@list:map(_pipe, fun gleamgen_ffi:identity/1)
end,
{some,
begin
_pipe@1 = Original,
gleamgen_ffi:identity(_pipe@1)
end}},
begin
_pipe@2 = Prepending,
_pipe@3 = gleam@list:first(_pipe@2),
_pipe@4 = gleam@result:map(_pipe@3, fun type_/1),
_pipe@5 = gleam@result:map(_pipe@4, fun gleamgen@types:list/1),
gleam@result:unwrap(_pipe@5, erlang:element(3, Original))
end}.
-file("src/gleamgen/expression.gleam", 113).
-spec tuple1(expression(HOG)) -> expression({HOG}).
tuple1(Arg1) ->
{expression,
{tuple_literal,
[begin
_pipe = Arg1,
gleamgen_ffi:identity(_pipe)
end]},
gleamgen@types:tuple1(type_(Arg1))}.
-file("src/gleamgen/expression.gleam", 117).
-spec equals(expression(HOJ), expression(HOJ)) -> expression(boolean()).
equals(First, Second) ->
{expression,
{equals,
begin
_pipe = First,
gleamgen_ffi:identity(_pipe)
end,
begin
_pipe@1 = Second,
gleamgen_ffi:identity(_pipe@1)
end},
generated_bool}.
-file("src/gleamgen/expression.gleam", 121).
-spec not_equals(expression(HON), expression(HON)) -> expression(boolean()).
not_equals(First, Second) ->
{expression,
{not_equals,
begin
_pipe = First,
gleamgen_ffi:identity(_pipe)
end,
begin
_pipe@1 = Second,
gleamgen_ffi:identity(_pipe@1)
end},
generated_bool}.
-file("src/gleamgen/expression.gleam", 134).
-spec tuple2(expression(HOR), expression(HOT)) -> expression({HOR, HOT}).
tuple2(Arg1, Arg2) ->
{expression,
{tuple_literal,
[begin
_pipe = Arg1,
gleamgen_ffi:identity(_pipe)
end,
begin
_pipe@1 = Arg2,
gleamgen_ffi:identity(_pipe@1)
end]},
gleamgen@types:tuple2(type_(Arg1), type_(Arg2))}.
-file("src/gleamgen/expression.gleam", 141).
-spec tuple3(expression(HOW), expression(HOY), expression(HPA)) -> expression({HOW,
HOY,
HPA}).
tuple3(Arg1, Arg2, Arg3) ->
{expression,
{tuple_literal,
[begin
_pipe = Arg1,
gleamgen_ffi:identity(_pipe)
end,
begin
_pipe@1 = Arg2,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Arg3,
gleamgen_ffi:identity(_pipe@2)
end]},
gleamgen@types:tuple3(type_(Arg1), type_(Arg2), type_(Arg3))}.
-file("src/gleamgen/expression.gleam", 156).
-spec tuple4(expression(HPD), expression(HPF), expression(HPH), expression(HPJ)) -> expression({HPD,
HPF,
HPH,
HPJ}).
tuple4(Arg1, Arg2, Arg3, Arg4) ->
{expression,
{tuple_literal,
[begin
_pipe = Arg1,
gleamgen_ffi:identity(_pipe)
end,
begin
_pipe@1 = Arg2,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Arg3,
gleamgen_ffi:identity(_pipe@2)
end,
begin
_pipe@3 = Arg4,
gleamgen_ffi:identity(_pipe@3)
end]},
gleamgen@types:tuple4(
type_(Arg1),
type_(Arg2),
type_(Arg3),
type_(Arg4)
)}.
-file("src/gleamgen/expression.gleam", 173).
-spec tuple5(
expression(HPM),
expression(HPO),
expression(HPQ),
expression(HPS),
expression(HPU)
) -> expression({HPM, HPO, HPQ, HPS, HPU}).
tuple5(Arg1, Arg2, Arg3, Arg4, Arg5) ->
{expression,
{tuple_literal,
[begin
_pipe = Arg1,
gleamgen_ffi:identity(_pipe)
end,
begin
_pipe@1 = Arg2,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Arg3,
gleamgen_ffi:identity(_pipe@2)
end,
begin
_pipe@3 = Arg4,
gleamgen_ffi:identity(_pipe@3)
end,
begin
_pipe@4 = Arg5,
gleamgen_ffi:identity(_pipe@4)
end]},
gleamgen@types:tuple5(
type_(Arg1),
type_(Arg2),
type_(Arg3),
type_(Arg4),
type_(Arg5)
)}.
-file("src/gleamgen/expression.gleam", 198).
-spec tuple6(
expression(HPX),
expression(HPZ),
expression(HQB),
expression(HQD),
expression(HQF),
expression(HQH)
) -> expression({HPX, HPZ, HQB, HQD, HQF, HQH}).
tuple6(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) ->
{expression,
{tuple_literal,
[begin
_pipe = Arg1,
gleamgen_ffi:identity(_pipe)
end,
begin
_pipe@1 = Arg2,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Arg3,
gleamgen_ffi:identity(_pipe@2)
end,
begin
_pipe@3 = Arg4,
gleamgen_ffi:identity(_pipe@3)
end,
begin
_pipe@4 = Arg5,
gleamgen_ffi:identity(_pipe@4)
end,
begin
_pipe@5 = Arg6,
gleamgen_ffi:identity(_pipe@5)
end]},
gleamgen@types:tuple6(
type_(Arg1),
type_(Arg2),
type_(Arg3),
type_(Arg4),
type_(Arg5),
type_(Arg6)
)}.
-file("src/gleamgen/expression.gleam", 226).
-spec tuple7(
expression(HQK),
expression(HQM),
expression(HQO),
expression(HQQ),
expression(HQS),
expression(HQU),
expression(HQW)
) -> expression({HQK, HQM, HQO, HQQ, HQS, HQU, HQW}).
tuple7(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7) ->
{expression,
{tuple_literal,
[begin
_pipe = Arg1,
gleamgen_ffi:identity(_pipe)
end,
begin
_pipe@1 = Arg2,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Arg3,
gleamgen_ffi:identity(_pipe@2)
end,
begin
_pipe@3 = Arg4,
gleamgen_ffi:identity(_pipe@3)
end,
begin
_pipe@4 = Arg5,
gleamgen_ffi:identity(_pipe@4)
end,
begin
_pipe@5 = Arg6,
gleamgen_ffi:identity(_pipe@5)
end,
begin
_pipe@6 = Arg7,
gleamgen_ffi:identity(_pipe@6)
end]},
gleamgen@types:tuple7(
type_(Arg1),
type_(Arg2),
type_(Arg3),
type_(Arg4),
type_(Arg5),
type_(Arg6),
type_(Arg7)
)}.
-file("src/gleamgen/expression.gleam", 257).
-spec tuple8(
expression(HQZ),
expression(HRB),
expression(HRD),
expression(HRF),
expression(HRH),
expression(HRJ),
expression(HRL),
expression(HRN)
) -> expression({HQZ, HRB, HRD, HRF, HRH, HRJ, HRL, HRN}).
tuple8(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8) ->
{expression,
{tuple_literal,
[begin
_pipe = Arg1,
gleamgen_ffi:identity(_pipe)
end,
begin
_pipe@1 = Arg2,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Arg3,
gleamgen_ffi:identity(_pipe@2)
end,
begin
_pipe@3 = Arg4,
gleamgen_ffi:identity(_pipe@3)
end,
begin
_pipe@4 = Arg5,
gleamgen_ffi:identity(_pipe@4)
end,
begin
_pipe@5 = Arg6,
gleamgen_ffi:identity(_pipe@5)
end,
begin
_pipe@6 = Arg7,
gleamgen_ffi:identity(_pipe@6)
end,
begin
_pipe@7 = Arg8,
gleamgen_ffi:identity(_pipe@7)
end]},
gleamgen@types:tuple8(
type_(Arg1),
type_(Arg2),
type_(Arg3),
type_(Arg4),
type_(Arg5),
type_(Arg6),
type_(Arg7),
type_(Arg8)
)}.
-file("src/gleamgen/expression.gleam", 291).
-spec tuple9(
expression(HRQ),
expression(HRS),
expression(HRU),
expression(HRW),
expression(HRY),
expression(HSA),
expression(HSC),
expression(HSE),
expression(HSG)
) -> expression({HRQ, HRS, HRU, HRW, HRY, HSA, HSC, HSE, HSG}).
tuple9(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9) ->
{expression,
{tuple_literal,
[begin
_pipe = Arg1,
gleamgen_ffi:identity(_pipe)
end,
begin
_pipe@1 = Arg2,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Arg3,
gleamgen_ffi:identity(_pipe@2)
end,
begin
_pipe@3 = Arg4,
gleamgen_ffi:identity(_pipe@3)
end,
begin
_pipe@4 = Arg5,
gleamgen_ffi:identity(_pipe@4)
end,
begin
_pipe@5 = Arg6,
gleamgen_ffi:identity(_pipe@5)
end,
begin
_pipe@6 = Arg7,
gleamgen_ffi:identity(_pipe@6)
end,
begin
_pipe@7 = Arg8,
gleamgen_ffi:identity(_pipe@7)
end,
begin
_pipe@8 = Arg9,
gleamgen_ffi:identity(_pipe@8)
end]},
gleamgen@types:tuple9(
type_(Arg1),
type_(Arg2),
type_(Arg3),
type_(Arg4),
type_(Arg5),
type_(Arg6),
type_(Arg7),
type_(Arg8),
type_(Arg9)
)}.
-file("src/gleamgen/expression.gleam", 394).
-spec echo_(expression(HTC), gleam@option:option(binary())) -> expression(HTC).
echo_(Expression, As_string) ->
{expression,
{echo, gleamgen_ffi:identity(Expression), As_string},
erlang:element(3, Expression)}.
-file("src/gleamgen/expression.gleam", 401).
-spec ok(expression(HTG)) -> expression({ok, HTG} | {error, any()}).
ok(Ok_value) ->
{expression,
{call,
raw(<<"Ok"/utf8>>),
[begin
_pipe = Ok_value,
gleamgen_ffi:identity(_pipe)
end]},
gleamgen@types:result(type_(Ok_value), gleamgen@types:dynamic())}.
-file("src/gleamgen/expression.gleam", 408).
-spec error(expression(HTM)) -> expression({ok, any()} | {error, HTM}).
error(Err_value) ->
{expression,
{call,
raw(<<"Error"/utf8>>),
[begin
_pipe = Err_value,
gleamgen_ffi:identity(_pipe)
end]},
gleamgen@types:result(gleamgen@types:dynamic(), type_(Err_value))}.
-file("src/gleamgen/expression.gleam", 489).
?DOC(
" Call a function or constructor with no arguments\n"
" ```gleam\n"
" expression.call0(\n"
" import_.function0(dict_module, dict.new)\n"
" )\n"
" |> expression.render(render.default_context())\n"
" |> render.to_string()\n"
" // -> \"dict.new()\"\n"
" ```\n"
).
-spec call0(expression(fun(() -> HUE))) -> expression(HUE).
call0(Func) ->
{expression,
{call,
begin
_pipe = Func,
gleamgen_ffi:identity(_pipe)
end,
[]},
gleamgen@types:dynamic()}.
-file("src/gleamgen/expression.gleam", 495).
?DOC(
" Call a function or constructor with one argument\n"
" See `call0`\n"
).
-spec call1(expression(fun((HUH) -> HUI)), expression(HUH)) -> expression(HUI).
call1(Func, Arg1) ->
{expression,
{call,
begin
_pipe = Func,
gleamgen_ffi:identity(_pipe)
end,
[begin
_pipe@1 = Arg1,
gleamgen_ffi:identity(_pipe@1)
end]},
gleamgen@types:dynamic()}.
-file("src/gleamgen/expression.gleam", 510).
?DOC(
" Call a function or constructor with two arguments\n"
" See `call0`\n"
).
-spec call2(
expression(fun((HUM, HUN) -> HUO)),
expression(HUM),
expression(HUN)
) -> expression(HUO).
call2(Func, Arg1, Arg2) ->
{expression,
{call,
begin
_pipe = Func,
gleamgen_ffi:identity(_pipe)
end,
[begin
_pipe@1 = Arg1,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Arg2,
gleamgen_ffi:identity(_pipe@2)
end]},
gleamgen@types:dynamic()}.
-file("src/gleamgen/expression.gleam", 526).
?DOC(
" Call a function or constructor with three arguments\n"
" See `call0`\n"
).
-spec call3(
expression(fun((HUT, HUU, HUV) -> HUW)),
expression(HUT),
expression(HUU),
expression(HUV)
) -> expression(HUW).
call3(Func, Arg1, Arg2, Arg3) ->
{expression,
{call,
begin
_pipe = Func,
gleamgen_ffi:identity(_pipe)
end,
[begin
_pipe@1 = Arg1,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Arg2,
gleamgen_ffi:identity(_pipe@2)
end,
begin
_pipe@3 = Arg3,
gleamgen_ffi:identity(_pipe@3)
end]},
gleamgen@types:dynamic()}.
-file("src/gleamgen/expression.gleam", 544).
?DOC(
" Call a function or constructor with four arguments\n"
" See `call0`\n"
).
-spec call4(
expression(fun((HVC, HVD, HVE, HVF) -> HVG)),
expression(HVC),
expression(HVD),
expression(HVE),
expression(HVF)
) -> expression(HVG).
call4(Func, Arg1, Arg2, Arg3, Arg4) ->
{expression,
{call,
begin
_pipe = Func,
gleamgen_ffi:identity(_pipe)
end,
[begin
_pipe@1 = Arg1,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Arg2,
gleamgen_ffi:identity(_pipe@2)
end,
begin
_pipe@3 = Arg3,
gleamgen_ffi:identity(_pipe@3)
end,
begin
_pipe@4 = Arg4,
gleamgen_ffi:identity(_pipe@4)
end]},
gleamgen@types:dynamic()}.
-file("src/gleamgen/expression.gleam", 564).
?DOC(
" Call a function or constructor with five arguments\n"
" See `call0`\n"
).
-spec call5(
expression(fun((HVN, HVO, HVP, HVQ, HVR) -> HVS)),
expression(HVN),
expression(HVO),
expression(HVP),
expression(HVQ),
expression(HVR)
) -> expression(HVS).
call5(Func, Arg1, Arg2, Arg3, Arg4, Arg5) ->
{expression,
{call,
begin
_pipe = Func,
gleamgen_ffi:identity(_pipe)
end,
[begin
_pipe@1 = Arg1,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Arg2,
gleamgen_ffi:identity(_pipe@2)
end,
begin
_pipe@3 = Arg3,
gleamgen_ffi:identity(_pipe@3)
end,
begin
_pipe@4 = Arg4,
gleamgen_ffi:identity(_pipe@4)
end,
begin
_pipe@5 = Arg5,
gleamgen_ffi:identity(_pipe@5)
end]},
gleamgen@types:dynamic()}.
-file("src/gleamgen/expression.gleam", 586).
?DOC(
" Call a function or constructor with six arguments\n"
" See `call0`\n"
).
-spec call6(
expression(fun((HWA, HWB, HWC, HWD, HWE, HWF) -> HWG)),
expression(HWA),
expression(HWB),
expression(HWC),
expression(HWD),
expression(HWE),
expression(HWF)
) -> expression(HWG).
call6(Func, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) ->
{expression,
{call,
begin
_pipe = Func,
gleamgen_ffi:identity(_pipe)
end,
[begin
_pipe@1 = Arg1,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Arg2,
gleamgen_ffi:identity(_pipe@2)
end,
begin
_pipe@3 = Arg3,
gleamgen_ffi:identity(_pipe@3)
end,
begin
_pipe@4 = Arg4,
gleamgen_ffi:identity(_pipe@4)
end,
begin
_pipe@5 = Arg5,
gleamgen_ffi:identity(_pipe@5)
end,
begin
_pipe@6 = Arg6,
gleamgen_ffi:identity(_pipe@6)
end]},
gleamgen@types:dynamic()}.
-file("src/gleamgen/expression.gleam", 610).
?DOC(
" Call a function or constructor with seven arguments\n"
" See `call0`\n"
).
-spec call7(
expression(fun((HWP, HWQ, HWR, HWS, HWT, HWU, HWV) -> HWW)),
expression(HWP),
expression(HWQ),
expression(HWR),
expression(HWS),
expression(HWT),
expression(HWU),
expression(HWV)
) -> expression(HWW).
call7(Func, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7) ->
{expression,
{call,
begin
_pipe = Func,
gleamgen_ffi:identity(_pipe)
end,
[begin
_pipe@1 = Arg1,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Arg2,
gleamgen_ffi:identity(_pipe@2)
end,
begin
_pipe@3 = Arg3,
gleamgen_ffi:identity(_pipe@3)
end,
begin
_pipe@4 = Arg4,
gleamgen_ffi:identity(_pipe@4)
end,
begin
_pipe@5 = Arg5,
gleamgen_ffi:identity(_pipe@5)
end,
begin
_pipe@6 = Arg6,
gleamgen_ffi:identity(_pipe@6)
end,
begin
_pipe@7 = Arg7,
gleamgen_ffi:identity(_pipe@7)
end]},
gleamgen@types:dynamic()}.
-file("src/gleamgen/expression.gleam", 636).
?DOC(
" Call a function or constructor with eight arguments\n"
" See `call0`\n"
).
-spec call8(
expression(fun((HXG, HXH, HXI, HXJ, HXK, HXL, HXM, HXN) -> HXO)),
expression(HXG),
expression(HXH),
expression(HXI),
expression(HXJ),
expression(HXK),
expression(HXL),
expression(HXM),
expression(HXN)
) -> expression(HXO).
call8(Func, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8) ->
{expression,
{call,
begin
_pipe = Func,
gleamgen_ffi:identity(_pipe)
end,
[begin
_pipe@1 = Arg1,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Arg2,
gleamgen_ffi:identity(_pipe@2)
end,
begin
_pipe@3 = Arg3,
gleamgen_ffi:identity(_pipe@3)
end,
begin
_pipe@4 = Arg4,
gleamgen_ffi:identity(_pipe@4)
end,
begin
_pipe@5 = Arg5,
gleamgen_ffi:identity(_pipe@5)
end,
begin
_pipe@6 = Arg6,
gleamgen_ffi:identity(_pipe@6)
end,
begin
_pipe@7 = Arg7,
gleamgen_ffi:identity(_pipe@7)
end,
begin
_pipe@8 = Arg8,
gleamgen_ffi:identity(_pipe@8)
end]},
gleamgen@types:dynamic()}.
-file("src/gleamgen/expression.gleam", 664).
?DOC(
" Call a function or constructor with nine arguments\n"
" See `call0`\n"
).
-spec call9(
expression(fun((HXZ, HYA, HYB, HYC, HYD, HYE, HYF, HYG, HYH) -> HYI)),
expression(HXZ),
expression(HYA),
expression(HYB),
expression(HYC),
expression(HYD),
expression(HYE),
expression(HYF),
expression(HYG),
expression(HYH)
) -> expression(HYI).
call9(Func, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9) ->
{expression,
{call,
begin
_pipe = Func,
gleamgen_ffi:identity(_pipe)
end,
[begin
_pipe@1 = Arg1,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Arg2,
gleamgen_ffi:identity(_pipe@2)
end,
begin
_pipe@3 = Arg3,
gleamgen_ffi:identity(_pipe@3)
end,
begin
_pipe@4 = Arg4,
gleamgen_ffi:identity(_pipe@4)
end,
begin
_pipe@5 = Arg5,
gleamgen_ffi:identity(_pipe@5)
end,
begin
_pipe@6 = Arg6,
gleamgen_ffi:identity(_pipe@6)
end,
begin
_pipe@7 = Arg7,
gleamgen_ffi:identity(_pipe@7)
end,
begin
_pipe@8 = Arg8,
gleamgen_ffi:identity(_pipe@8)
end,
begin
_pipe@9 = Arg9,
gleamgen_ffi:identity(_pipe@9)
end]},
gleamgen@types:dynamic()}.
-file("src/gleamgen/expression.gleam", 704).
-spec construct0(expression(fun(() -> HYY))) -> expression(HYY).
construct0(Constructor) ->
{expression,
{single_constructor,
begin
_pipe = Constructor,
gleamgen_ffi:identity(_pipe)
end},
gleamgen@types:dynamic()}.
-file("src/gleamgen/expression.gleam", 735).
?DOC(false).
-spec update_or_create_block(
fun((list(statement())) -> list(statement())),
expression(HZH)
) -> expression(HZH).
update_or_create_block(Update_with, Next_expression) ->
case erlang:element(2, Next_expression) of
{block, Expressions} ->
{expression,
{block, Update_with(Expressions)},
erlang:element(3, Next_expression)};
_ ->
{expression,
{block,
Update_with(
[{expression_statement,
gleamgen_ffi:identity(Next_expression)}]
)},
erlang:element(3, Next_expression)}
end.
-file("src/gleamgen/expression.gleam", 758).
?DOC(false).
-spec add_to_or_create_block(statement(), expression(HZK)) -> expression(HZK).
add_to_or_create_block(Update_with, Next_expression) ->
update_or_create_block(
fun(Statements) -> [Update_with | Statements] end,
Next_expression
).
-file("src/gleamgen/expression.gleam", 769).
?DOC(false).
-spec new_use(
expression(any()),
list(expression(gleamgen@types:dynamic_())),
list(binary())
) -> expression(gleamgen@types:dynamic_()).
new_use(Function, Args, Callback_args) ->
Return = gleamgen@types:get_return_type(erlang:element(3, Function)),
{expression,
{use,
begin
_pipe = Function,
gleamgen_ffi:identity(_pipe)
end,
Args,
Callback_args},
Return}.
-file("src/gleamgen/expression.gleam", 807).
-spec with_render_config(expression(IAE), gleamgen@render@config:config()) -> expression(IAE).
with_render_config(Expression, Config) ->
{expression,
{with_config, gleamgen_ffi:identity(Expression), Config},
erlang:element(3, Expression)}.
-file("src/gleamgen/expression.gleam", 828).
?DOC(" Convert an expression to any type without checking\n").
-spec coerce_dynamic_unsafe(expression(any())) -> expression(any()).
coerce_dynamic_unsafe(Type_) ->
gleamgen_ffi:identity(Type_).
-file("src/gleamgen/expression.gleam", 1199).
-spec do_remove_incorrect_empty_lines(
list(statement()),
list(statement()),
boolean()
) -> list(statement()).
do_remove_incorrect_empty_lines(Statements, Acc, Was_just_empty_line) ->
case Statements of
[] ->
lists:reverse(Acc);
[linebreak | Rest] ->
do_remove_incorrect_empty_lines(Rest, Acc, true);
[Other | Rest@1] when Was_just_empty_line ->
do_remove_incorrect_empty_lines(
Rest@1,
[Other, linebreak | Acc],
false
);
[Other@1 | Rest@2] ->
do_remove_incorrect_empty_lines(Rest@2, [Other@1 | Acc], false)
end.
-file("src/gleamgen/expression.gleam", 1192).
-spec remove_incorrect_empty_lines(list(statement())) -> list(statement()).
remove_incorrect_empty_lines(Statements) ->
Trimmed_beginning = gleam@list:drop_while(
Statements,
fun(Statement) -> Statement =:= linebreak end
),
do_remove_incorrect_empty_lines(Trimmed_beginning, [], false).
-file("src/gleamgen/expression.gleam", 962).
-spec create_echo(
expression(gleamgen@types:dynamic_()),
gleamgen@internal@render:context()
) -> gleamgen@internal@render:rendered().
create_echo(Expression, Context) ->
Rendered_expr = render(Expression, Context),
_pipe = glam@doc:concat(
[glam@doc:from_string(<<"echo"/utf8>>),
{break, <<" "/utf8>>, <<""/utf8>>},
erlang:element(2, Rendered_expr)]
),
{render, _pipe, erlang:element(3, Rendered_expr)}.
-file("src/gleamgen/expression.gleam", 846).
-spec render(expression(any()), gleamgen@internal@render:context()) -> gleamgen@internal@render:rendered().
render(Expression, Context) ->
case erlang:element(2, Expression) of
{int_literal, Value} ->
_pipe = Value,
_pipe@1 = erlang:integer_to_binary(_pipe),
_pipe@2 = glam@doc:from_string(_pipe@1),
{render, _pipe@2, {rendered_details, [], {report, [], []}}};
{float_literal, Value@1} ->
_pipe@3 = Value@1,
_pipe@4 = gleam_stdlib:float_to_string(_pipe@3),
_pipe@5 = glam@doc:from_string(_pipe@4),
{render, _pipe@5, {rendered_details, [], {report, [], []}}};
{str_literal, Value@2} ->
_pipe@6 = gleamgen@internal@render:escape_string(Value@2),
_pipe@7 = glam@doc:from_string(_pipe@6),
{render, _pipe@7, {rendered_details, [], {report, [], []}}};
{bool_literal, true} ->
_pipe@8 = glam@doc:from_string(<<"True"/utf8>>),
{render, _pipe@8, {rendered_details, [], {report, [], []}}};
{bool_literal, false} ->
_pipe@9 = glam@doc:from_string(<<"False"/utf8>>),
{render, _pipe@9, {rendered_details, [], {report, [], []}}};
nil_literal ->
_pipe@10 = glam@doc:from_string(<<"Nil"/utf8>>),
{render, _pipe@10, {rendered_details, [], {report, [], []}}};
{list_literal, Values, Initial_list} ->
render_list(Values, Initial_list, Context);
{tuple_literal, Values@1} ->
render_tuple(Values@1, Context);
{ident, Value@3} ->
Used_imports = case gleam@string:split_once(Value@3, <<"."/utf8>>) of
{ok, {Module, _}} ->
[Module];
{error, nil} ->
[]
end,
_pipe@11 = glam@doc:from_string(Value@3),
{render,
_pipe@11,
begin
_record = {rendered_details, [], {report, [], []}},
{rendered_details, Used_imports, erlang:element(3, _record)}
end};
{raw_doc, Doc} ->
{render, Doc, {rendered_details, [], {report, [], []}}};
{todo, As_string} ->
_pipe@12 = render_panicking_expression(
glam@doc:from_string(<<"todo"/utf8>>),
As_string
),
{render, _pipe@12, {rendered_details, [], {report, [], []}}};
{panic, As_string@1} ->
_pipe@13 = render_panicking_expression(
glam@doc:from_string(<<"panic"/utf8>>),
As_string@1
),
{render, _pipe@13, {rendered_details, [], {report, [], []}}};
{assert, Condition, As_string@2} ->
Assert_ = create_assert(Condition, Context),
_pipe@14 = render_panicking_expression(
erlang:element(2, Assert_),
As_string@2
),
{render, _pipe@14, erlang:element(3, Assert_)};
{echo, Expression@1, As_string@3} ->
Echo_ = create_echo(Expression@1, Context),
_pipe@15 = render_panicking_expression(
erlang:element(2, Echo_),
As_string@3
),
{render, _pipe@15, erlang:element(3, Echo_)};
{concat_string, Expr1, Expr2} ->
render_operator(
Expr1,
Expr2,
glam@doc:from_string(<<"<>"/utf8>>),
Context
);
{math_operator, Expr1@1, Op, Expr2@1} ->
render_operator(Expr1@1, Expr2@1, case Op of
add ->
glam@doc:from_string(<<"+"/utf8>>);
sub ->
glam@doc:from_string(<<"-"/utf8>>);
mul ->
glam@doc:from_string(<<"*"/utf8>>);
'div' ->
glam@doc:from_string(<<"/"/utf8>>)
end, Context);
{math_operator_float, Expr1@2, Op@1, Expr2@2} ->
render_operator(Expr1@2, Expr2@2, case Op@1 of
add ->
glam@doc:from_string(<<"+."/utf8>>);
sub ->
glam@doc:from_string(<<"-."/utf8>>);
mul ->
glam@doc:from_string(<<"*."/utf8>>);
'div' ->
glam@doc:from_string(<<"/."/utf8>>)
end, Context);
{comparison, Expr1@3, Operator, Expr2@3} ->
Operator_doc = case Operator of
greater_than ->
glam@doc:from_string(<<">"/utf8>>);
greater_than_or_equal ->
glam@doc:from_string(<<">="/utf8>>);
less_than ->
glam@doc:from_string(<<"<"/utf8>>);
less_than_or_equal ->
glam@doc:from_string(<<"<="/utf8>>)
end,
render_operator(Expr1@3, Expr2@3, Operator_doc, Context);
{comparison_float, Expr1@4, Operator@1, Expr2@4} ->
Operator_doc@1 = case Operator@1 of
greater_than ->
glam@doc:from_string(<<">."/utf8>>);
greater_than_or_equal ->
glam@doc:from_string(<<">=."/utf8>>);
less_than ->
glam@doc:from_string(<<"<."/utf8>>);
less_than_or_equal ->
glam@doc:from_string(<<"<=."/utf8>>)
end,
render_operator(Expr1@4, Expr2@4, Operator_doc@1, Context);
{call, Func, Args} ->
render_call(Func, Args, Context);
{single_constructor, Constructor} ->
render_constructor(Constructor, Context);
{block, Expressions} ->
render_block(Expressions, Context);
{equals, Expr1@5, Expr2@5} ->
render_operator(
Expr1@5,
Expr2@5,
glam@doc:from_string(<<"=="/utf8>>),
Context
);
{not_equals, Expr1@6, Expr2@6} ->
render_operator(
Expr1@6,
Expr2@6,
glam@doc:from_string(<<"!="/utf8>>),
Context
);
{'case', To_match_on, Patterns, All_can_match_on_multiple} ->
render_case(
To_match_on,
Patterns,
All_can_match_on_multiple,
Context
);
{anonymous_function, Renderer} ->
Renderer(Context);
{use, Func@1, Args@1, Callback_args} ->
render_use(Func@1, Args@1, Callback_args, Context);
{with_config, Expr, Config} ->
render(
gleamgen_ffi:identity(Expr),
{context, Config, erlang:element(3, Context)}
)
end.
-file("src/gleamgen/expression.gleam", 975).
-spec create_assert(expression(boolean()), gleamgen@internal@render:context()) -> gleamgen@internal@render:rendered().
create_assert(Condition, Context) ->
Rendered_condition = render(Condition, Context),
_pipe = glam@doc:concat(
[glam@doc:from_string(<<"assert"/utf8>>),
{break, <<" "/utf8>>, <<""/utf8>>},
erlang:element(2, Rendered_condition)]
),
{render, _pipe, erlang:element(3, Rendered_condition)}.
-file("src/gleamgen/expression.gleam", 985).
-spec render_panicking_expression(
glam@doc:document(),
gleam@option:option(binary())
) -> glam@doc:document().
render_panicking_expression(Begin_with, As_string) ->
case As_string of
{some, Value} ->
_pipe@2 = glam@doc:concat(
[Begin_with,
glam@doc:from_string(<<" as"/utf8>>),
{break, <<" "/utf8>>, <<""/utf8>>},
begin
_pipe = Value,
_pipe@1 = gleamgen@internal@render:escape_string(_pipe),
glam@doc:from_string(_pipe@1)
end]
),
glam@doc:group(_pipe@2);
none ->
Begin_with
end.
-file("src/gleamgen/expression.gleam", 1210).
-spec render_expressions(
list(expression(any())),
gleamgen@internal@render:context()
) -> {list(glam@doc:document()), gleamgen@internal@render:rendered_details()}.
render_expressions(Expressions, Context) ->
{Rendered@1, Details} = gleam@list:fold(
Expressions,
{[], {rendered_details, [], {report, [], []}}},
fun(Acc, Expr) ->
Rendered = render(Expr, Context),
{[erlang:element(2, Rendered) | erlang:element(1, Acc)],
gleamgen@internal@render:merge_details(
erlang:element(3, Rendered),
erlang:element(2, Acc)
)}
end
),
{begin
_pipe = Rendered@1,
lists:reverse(_pipe)
end,
Details}.
-file("src/gleamgen/expression.gleam", 1025).
-spec render_case(
expression(gleamgen@types:dynamic_()),
fun((gleamgen@internal@render:context()) -> list(fun((integer()) -> gleamgen@internal@render:rendered()))),
boolean(),
gleamgen@internal@render:context()
) -> gleamgen@internal@render:rendered().
render_case(To_match_on, Patterns, All_can_match_on_multiple, Context) ->
{Rendered_match_on@1, Subject_count} = case erlang:element(2, To_match_on) of
{tuple_literal, Expressions} when All_can_match_on_multiple ->
{Expressions@1, Details} = render_expressions(Expressions, Context),
Rendered_match_on = begin
_pipe = Expressions@1,
_pipe@1 = glam@doc:concat_join(
_pipe,
[glam@doc:from_string(<<","/utf8>>),
{break, <<" "/utf8>>, <<""/utf8>>}]
),
{render, _pipe@1, Details}
end,
{Rendered_match_on, erlang:length(Expressions@1)};
_ ->
{render(To_match_on, Context), 1}
end,
Patterns@1 = gleam@list:map(
Patterns(Context),
fun(M) -> M(Subject_count) end
),
Matcher_details = gleam@list:fold(
gleam@list:map(Patterns@1, fun(M@1) -> erlang:element(3, M@1) end),
{rendered_details, [], {report, [], []}},
fun gleamgen@internal@render:merge_details/2
),
_pipe@4 = glam@doc:concat(
[glam@doc:from_string(<<"case "/utf8>>),
erlang:element(2, Rendered_match_on@1),
{break, <<" "/utf8>>, <<""/utf8>>},
gleamgen@internal@render:body(
begin
_pipe@2 = Patterns@1,
_pipe@3 = gleam@list:map(
_pipe@2,
fun(M@2) -> erlang:element(2, M@2) end
),
glam@doc:join(_pipe@3, {line, 1})
end,
true
)]
),
{render,
_pipe@4,
gleamgen@internal@render:merge_details(
erlang:element(3, Rendered_match_on@1),
Matcher_details
)}.
-file("src/gleamgen/expression.gleam", 1064).
-spec render_tuple(
list(expression(gleamgen@types:dynamic_())),
gleamgen@internal@render:context()
) -> gleamgen@internal@render:rendered().
render_tuple(Values, Context) ->
{Rendered_values, Details} = render_expressions(Values, Context),
_pipe = Rendered_values,
_pipe@1 = gleamgen@internal@render:pretty_list(_pipe),
_pipe@2 = glam@doc:prepend(_pipe@1, glam@doc:from_string(<<"#"/utf8>>)),
{render, _pipe@2, Details}.
-file("src/gleamgen/expression.gleam", 1072).
-spec render_list(
list(expression(gleamgen@types:dynamic_())),
gleam@option:option(expression(gleamgen@types:dynamic_())),
gleamgen@internal@render:context()
) -> gleamgen@internal@render:rendered().
render_list(Values, Initial_list, Context) ->
Comma = glam@doc:concat(
[glam@doc:from_string(<<","/utf8>>), {break, <<" "/utf8>>, <<""/utf8>>}]
),
{Ending, Trailing_comma} = case Initial_list of
{some, Initial} ->
{glam@doc:concat(
[glam@doc:from_string(<<","/utf8>>),
{break, <<" "/utf8>>, <<""/utf8>>},
glam@doc:from_string(<<".."/utf8>>),
erlang:element(2, render(Initial, Context))]
),
{break, <<""/utf8>>, <<""/utf8>>}};
none ->
{{concat, []}, glam@doc:break(<<""/utf8>>, <<","/utf8>>)}
end,
Open_bracket = glam@doc:concat(
[glam@doc:from_string(<<"["/utf8>>), {break, <<""/utf8>>, <<""/utf8>>}]
),
Close_bracket = glam@doc:concat(
[Trailing_comma, glam@doc:from_string(<<"]"/utf8>>)]
),
{Rendered_values, Details} = render_expressions(Values, Context),
_pipe = Rendered_values,
_pipe@1 = glam@doc:join(_pipe, Comma),
_pipe@2 = glam@doc:prepend(_pipe@1, Open_bracket),
_pipe@3 = glam@doc:append(_pipe@2, Ending),
_pipe@4 = glam@doc:nest(_pipe@3, 2),
_pipe@5 = glam@doc:append(_pipe@4, Close_bracket),
_pipe@6 = glam@doc:group(_pipe@5),
{render, _pipe@6, Details}.
-file("src/gleamgen/expression.gleam", 1222).
-spec render_call(
expression(gleamgen@types:dynamic_()),
list(expression(gleamgen@types:dynamic_())),
gleamgen@internal@render:context()
) -> gleamgen@internal@render:rendered().
render_call(Func, Args, Context) ->
Arg_context = {context, erlang:element(2, Context), true},
{Rendered_args, Details} = render_expressions(Args, Arg_context),
Caller = render(Func, Context),
_pipe = glam@doc:concat(
[erlang:element(2, Caller),
gleamgen@internal@render:pretty_list(Rendered_args)]
),
{render,
_pipe,
gleamgen@internal@render:merge_details(
Details,
erlang:element(3, Caller)
)}.
-file("src/gleamgen/expression.gleam", 1002).
-spec render_use(
expression(gleamgen@types:dynamic_()),
list(expression(gleamgen@types:dynamic_())),
list(binary()),
gleamgen@internal@render:context()
) -> gleamgen@internal@render:rendered().
render_use(Func, Args, Callback_args, Context) ->
Use_args = begin
_pipe = Callback_args,
_pipe@1 = gleam@list:map(_pipe, fun glam@doc:from_string/1),
_pipe@2 = glam@doc:join(
_pipe@1,
glam@doc:concat(
[glam@doc:from_string(<<","/utf8>>),
{break, <<" "/utf8>>, <<""/utf8>>}]
)
),
glam@doc:append(_pipe@2, case gleam@list:is_empty(Callback_args) of
true ->
{concat, []};
false ->
{break, <<" "/utf8>>, <<""/utf8>>}
end)
end,
Call = render_call(Func, Args, Context),
_pipe@3 = glam@doc:concat(
[glam@doc:from_string(<<"use"/utf8>>),
{break, <<" "/utf8>>, <<""/utf8>>},
Use_args,
glam@doc:from_string(<<"<-"/utf8>>),
{break, <<" "/utf8>>, <<""/utf8>>},
erlang:element(2, Call)]
),
{render, _pipe@3, erlang:element(3, Call)}.
-file("src/gleamgen/expression.gleam", 1234).
-spec render_constructor(
expression(gleamgen@types:dynamic_()),
gleamgen@internal@render:context()
) -> gleamgen@internal@render:rendered().
render_constructor(Func, Context) ->
render(Func, Context).
-file("src/gleamgen/expression.gleam", 1238).
-spec render_operator(
expression(ICI),
expression(ICI),
glam@doc:document(),
gleamgen@internal@render:context()
) -> gleamgen@internal@render:rendered().
render_operator(Expr1, Expr2, Rendered_op, Context) ->
First_rendered = render(Expr1, Context),
Second_rendered = render(Expr2, Context),
_pipe = glam@doc:concat(
[erlang:element(2, First_rendered),
{break, <<" "/utf8>>, <<""/utf8>>},
Rendered_op,
{break, <<" "/utf8>>, <<""/utf8>>},
erlang:element(2, Second_rendered)]
),
{render,
_pipe,
gleamgen@internal@render:merge_details(
erlang:element(3, First_rendered),
erlang:element(3, Second_rendered)
)}.
-file("src/gleamgen/expression.gleam", 1169).
-spec render_block_multi_statement(
list(statement()),
gleamgen@internal@render:context()
) -> gleamgen@internal@render:rendered().
render_block_multi_statement(Statements, Context) ->
{Inner_statements, Details} = gleam@list:fold(
Statements,
{[], {rendered_details, [], {report, [], []}}},
fun(Acc, Statement) ->
Rendered = render_statement(
Statement,
{context, erlang:element(2, Context), true}
),
{[erlang:element(2, Rendered) | erlang:element(1, Acc)],
gleamgen@internal@render:merge_details(
erlang:element(3, Rendered),
erlang:element(2, Acc)
)}
end
),
Inner = begin
_pipe = Inner_statements,
_pipe@1 = lists:reverse(_pipe),
glam@doc:join(_pipe@1, {line, 1})
end,
_pipe@2 = case erlang:element(3, Context) of
true ->
gleamgen@internal@render:body(Inner, true);
false ->
Inner
end,
{render, _pipe@2, Details}.
-file("src/gleamgen/expression.gleam", 1103).
-spec render_statement(statement(), gleamgen@internal@render:context()) -> gleamgen@internal@render:rendered().
render_statement(Statement, Context) ->
case Statement of
{let_declaration, Variable, Value, Assert_} ->
Rendered_value = render(Value, Context),
Let_def = case Assert_ of
true ->
<<"let assert "/utf8>>;
false ->
<<"let "/utf8>>
end,
{Type_annotation, Details} = case gleamgen@types:render_type(
erlang:element(3, Value)
) of
{ok, Rendered_type} when erlang:element(
5,
erlang:element(2, Context)
) ->
{glam@doc:concat(
[glam@doc:from_string(<<":"/utf8>>),
{break, <<" "/utf8>>, <<""/utf8>>},
erlang:element(2, Rendered_type)]
),
gleamgen@internal@render:merge_details(
erlang:element(3, Rendered_value),
erlang:element(3, Rendered_type)
)};
_ ->
{{concat, []}, erlang:element(3, Rendered_value)}
end,
_pipe = glam@doc:concat(
[glam@doc:from_string(Let_def),
glam@doc:from_string(Variable),
Type_annotation,
{break, <<" "/utf8>>, <<""/utf8>>},
glam@doc:from_string(<<"="/utf8>>),
{break, <<" "/utf8>>, <<""/utf8>>},
erlang:element(2, Rendered_value)]
),
{render, _pipe, Details};
{comment, Comments} ->
_pipe@1 = Comments,
_pipe@2 = gleam@list:map(
_pipe@1,
fun(Comment) ->
glam@doc:from_string(<<"// "/utf8, Comment/binary>>)
end
),
_pipe@3 = glam@doc:join(_pipe@2, {line, 1}),
{render, _pipe@3, {rendered_details, [], {report, [], []}}};
linebreak ->
{render, {concat, []}, {rendered_details, [], {report, [], []}}};
{expression_statement,
{expression,
{with_config, {expression, {block, Statements}, _}, Config},
_}} ->
render_block(Statements, {context, Config, false});
{expression_statement, Expr} ->
render(Expr, Context)
end.
-file("src/gleamgen/expression.gleam", 1154).
-spec render_block(list(statement()), gleamgen@internal@render:context()) -> gleamgen@internal@render:rendered().
render_block(Statements, Context) ->
Corrected_statements = remove_incorrect_empty_lines(Statements),
case Corrected_statements of
[{expression_statement, Expr}] ->
render(Expr, {context, erlang:element(2, Context), true});
_ ->
render_block_multi_statement(Corrected_statements, Context)
end.