Current section

Files

Jump to
gleamgen src gleamgen@expression.erl
Raw

src/gleamgen@expression.erl

-module(gleamgen@expression).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([int/1, float/1, string/1, bool/1, nil/0, unchecked_ident/1, unchecked_of_type/2, concat_string/2, todo_/1, panic_/1, math_operator/3, math_operator_float/3, call_unchecked/2, new_block/2, new_case/3, type_/1, to_unchecked/1, list/1, list_prepend/2, tuple1/1, equals/2, tuple2/2, tuple3/3, tuple4/4, tuple5/5, tuple6/6, tuple7/7, tuple8/8, tuple9/9, 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, new_use/3, unsafe_from_unchecked/1, render_attribute/2, render/2, render_statement/2]).
-export_type([expression/1, internal_expression/1, math_operator/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(HFL) :: {expression,
internal_expression(HFL),
gleamgen@types:generated_type(HFL)}.
-type internal_expression(HFM) :: {int_literal, integer()} |
{float_literal, float()} |
{str_literal, binary()} |
{bool_literal, boolean()} |
nil_literal |
{list_literal,
list(expression(gleamgen@types:unchecked())),
gleam@option:option(expression(gleamgen@types:unchecked()))} |
{equals,
expression(gleamgen@types:unchecked()),
expression(gleamgen@types:unchecked())} |
{tuple_literal, list(expression(gleamgen@types:unchecked()))} |
{ident, binary()} |
{todo, gleam@option:option(binary())} |
{panic, gleam@option:option(binary())} |
{math_operator,
expression(integer()),
math_operator(),
expression(integer())} |
{concat_string, expression(binary()), expression(binary())} |
{math_operator_float,
expression(float()),
math_operator(),
expression(float())} |
{call,
expression(gleamgen@types:unchecked()),
list(expression(gleamgen@types:unchecked()))} |
{single_constructor, expression(gleamgen@types:unchecked())} |
{block, list(statement())} |
{'case',
expression(gleamgen@types:unchecked()),
list(fun((gleamgen@render:context()) -> gleamgen@render:rendered()))} |
{use,
expression(gleamgen@types:unchecked()),
list(expression(gleamgen@types:unchecked())),
list(binary())} |
{gleam_phantom, HFM}.
-type math_operator() :: add |
sub |
mul |
'div' |
greater_than |
greater_than_or_equal |
less_than |
less_than_or_equal.
-type statement() :: {let_declaration,
binary(),
expression(gleamgen@types:unchecked())} |
{expression_statement, expression(gleamgen@types:unchecked())}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 51).
-spec int(integer()) -> expression(integer()).
int(Value) ->
{expression, {int_literal, Value}, generated_int}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 55).
-spec float(float()) -> expression(float()).
float(Value) ->
{expression, {float_literal, Value}, generated_float}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 59).
-spec string(binary()) -> expression(binary()).
string(Value) ->
{expression, {str_literal, Value}, generated_string}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 63).
-spec bool(boolean()) -> expression(boolean()).
bool(Value) ->
{expression, {bool_literal, Value}, generated_bool}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 67).
-spec nil() -> expression(nil).
nil() ->
{expression, nil_literal, generated_nil}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 312).
?DOC(" Provide an ident that could be of any type\n").
-spec unchecked_ident(binary()) -> expression(any()).
unchecked_ident(Value) ->
{expression, {ident, Value}, gleamgen@types:unchecked()}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 317).
?DOC(" Provide a string to inject without any checking of the specified type\n").
-spec unchecked_of_type(binary(), gleamgen@types:generated_type(HKF)) -> expression(HKF).
unchecked_of_type(Value, Type_) ->
{expression, {ident, Value}, Type_}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 331).
?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("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 345).
?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:unchecked()}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 356).
?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:unchecked()}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 393).
?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("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 412).
?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.GreaterThan,\n"
" expression.unchecked_ident(\"other_float\")\n"
" )\n"
" |> expression.render(render.default_context())\n"
" |> render.to_string()\n"
" // -> \"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("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 637).
?DOC(" Call a function or constructor without type checking\n").
-spec call_unchecked(
expression(gleamgen@types:unchecked()),
list(expression(gleamgen@types:unchecked()))
) -> expression(gleamgen@types:unchecked()).
call_unchecked(Func, Args) ->
{expression, {call, Func, Args}, gleamgen@types:unchecked()}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 670).
?DOC(false).
-spec new_block(list(statement()), gleamgen@types:generated_type(HQI)) -> expression(HQI).
new_block(Expressions, Return) ->
{expression, {block, Expressions}, Return}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 688).
?DOC(false).
-spec new_case(
expression(gleamgen@types:unchecked()),
list(fun((gleamgen@render:context()) -> gleamgen@render:rendered())),
gleamgen@types:generated_type(HQS)
) -> expression(HQS).
new_case(To_match_on, Matchers, Return) ->
{expression, {'case', To_match_on, Matchers}, Return}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 693).
?DOC(" Get the internal type of an expression\n").
-spec type_(expression(HQU)) -> gleamgen@types:generated_type(HQU).
type_(Expr) ->
erlang:element(3, Expr).
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 703).
-spec to_unchecked(expression(any())) -> expression(gleamgen@types:unchecked()).
to_unchecked(Type_) ->
gleamgen_ffi:identity(Type_).
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 71).
-spec list(list(expression(HFS))) -> expression(list(HFS)).
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:unchecked() end
),
gleamgen@types:list(_pipe@4)
end}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 82).
-spec list_prepend(list(expression(HFX)), expression(list(HFX))) -> expression(list(HFX)).
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:lazy_unwrap(
_pipe@4,
fun() -> gleamgen@types:unchecked() end
),
gleamgen@types:list(_pipe@5)
end}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 99).
-spec tuple1(expression(HGE)) -> expression({HGE}).
tuple1(Arg1) ->
{expression,
{tuple_literal,
[begin
_pipe = Arg1,
gleamgen_ffi:identity(_pipe)
end]},
gleamgen@types:tuple1(type_(Arg1))}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 103).
-spec equals(expression(HGH), expression(HGH)) -> 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("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 113).
-spec tuple2(expression(HGL), expression(HGN)) -> expression({HGL, HGN}).
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("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 120).
-spec tuple3(expression(HGQ), expression(HGS), expression(HGU)) -> expression({HGQ,
HGS,
HGU}).
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("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 135).
-spec tuple4(expression(HGX), expression(HGZ), expression(HHB), expression(HHD)) -> expression({HGX,
HGZ,
HHB,
HHD}).
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("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 152).
-spec tuple5(
expression(HHG),
expression(HHI),
expression(HHK),
expression(HHM),
expression(HHO)
) -> expression({HHG, HHI, HHK, HHM, HHO}).
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("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 177).
-spec tuple6(
expression(HHR),
expression(HHT),
expression(HHV),
expression(HHX),
expression(HHZ),
expression(HIB)
) -> expression({HHR, HHT, HHV, HHX, HHZ, HIB}).
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("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 205).
-spec tuple7(
expression(HIE),
expression(HIG),
expression(HII),
expression(HIK),
expression(HIM),
expression(HIO),
expression(HIQ)
) -> expression({HIE, HIG, HII, HIK, HIM, HIO, HIQ}).
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("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 236).
-spec tuple8(
expression(HIT),
expression(HIV),
expression(HIX),
expression(HIZ),
expression(HJB),
expression(HJD),
expression(HJF),
expression(HJH)
) -> expression({HIT, HIV, HIX, HIZ, HJB, HJD, HJF, HJH}).
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("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 270).
-spec tuple9(
expression(HJK),
expression(HJM),
expression(HJO),
expression(HJQ),
expression(HJS),
expression(HJU),
expression(HJW),
expression(HJY),
expression(HKA)
) -> expression({HJK, HJM, HJO, HJQ, HJS, HJU, HJW, HJY, HKA}).
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("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 360).
-spec ok(expression(HKR)) -> expression({ok, HKR} | {error, any()}).
ok(Ok_value) ->
{expression,
{call,
unchecked_ident(<<"Ok"/utf8>>),
[begin
_pipe = Ok_value,
gleamgen_ffi:identity(_pipe)
end]},
gleamgen@types:result(type_(Ok_value), gleamgen@types:unchecked())}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 367).
-spec error(expression(HKX)) -> expression({ok, any()} | {error, HKX}).
error(Err_value) ->
{expression,
{call,
unchecked_ident(<<"Error"/utf8>>),
[begin
_pipe = Err_value,
gleamgen_ffi:identity(_pipe)
end]},
gleamgen@types:result(gleamgen@types:unchecked(), type_(Err_value))}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 429).
?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(() -> HLJ))) -> expression(HLJ).
call0(Func) ->
{expression,
{call,
begin
_pipe = Func,
gleamgen_ffi:identity(_pipe)
end,
[]},
gleamgen@types:unchecked()}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 435).
?DOC(
" Call a function or constructor with one argument\n"
" See `call0`\n"
).
-spec call1(expression(fun((HLM) -> HLN)), expression(HLM)) -> expression(HLN).
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:unchecked()}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 450).
?DOC(
" Call a function or constructor with two arguments\n"
" See `call0`\n"
).
-spec call2(
expression(fun((HLR, HLS) -> HLT)),
expression(HLR),
expression(HLS)
) -> expression(HLT).
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:unchecked()}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 466).
?DOC(
" Call a function or constructor with three arguments\n"
" See `call0`\n"
).
-spec call3(
expression(fun((HLY, HLZ, HMA) -> HMB)),
expression(HLY),
expression(HLZ),
expression(HMA)
) -> expression(HMB).
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:unchecked()}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 484).
?DOC(
" Call a function or constructor with four arguments\n"
" See `call0`\n"
).
-spec call4(
expression(fun((HMH, HMI, HMJ, HMK) -> HML)),
expression(HMH),
expression(HMI),
expression(HMJ),
expression(HMK)
) -> expression(HML).
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:unchecked()}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 504).
?DOC(
" Call a function or constructor with five arguments\n"
" See `call0`\n"
).
-spec call5(
expression(fun((HMS, HMT, HMU, HMV, HMW) -> HMX)),
expression(HMS),
expression(HMT),
expression(HMU),
expression(HMV),
expression(HMW)
) -> expression(HMX).
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:unchecked()}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 526).
?DOC(
" Call a function or constructor with six arguments\n"
" See `call0`\n"
).
-spec call6(
expression(fun((HNF, HNG, HNH, HNI, HNJ, HNK) -> HNL)),
expression(HNF),
expression(HNG),
expression(HNH),
expression(HNI),
expression(HNJ),
expression(HNK)
) -> expression(HNL).
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:unchecked()}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 550).
?DOC(
" Call a function or constructor with seven arguments\n"
" See `call0`\n"
).
-spec call7(
expression(fun((HNU, HNV, HNW, HNX, HNY, HNZ, HOA) -> HOB)),
expression(HNU),
expression(HNV),
expression(HNW),
expression(HNX),
expression(HNY),
expression(HNZ),
expression(HOA)
) -> expression(HOB).
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:unchecked()}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 576).
?DOC(
" Call a function or constructor with eight arguments\n"
" See `call0`\n"
).
-spec call8(
expression(fun((HOL, HOM, HON, HOO, HOP, HOQ, HOR, HOS) -> HOT)),
expression(HOL),
expression(HOM),
expression(HON),
expression(HOO),
expression(HOP),
expression(HOQ),
expression(HOR),
expression(HOS)
) -> expression(HOT).
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:unchecked()}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 604).
?DOC(
" Call a function or constructor with nine arguments\n"
" See `call0`\n"
).
-spec call9(
expression(fun((HPE, HPF, HPG, HPH, HPI, HPJ, HPK, HPL, HPM) -> HPN)),
expression(HPE),
expression(HPF),
expression(HPG),
expression(HPH),
expression(HPI),
expression(HPJ),
expression(HPK),
expression(HPL),
expression(HPM)
) -> expression(HPN).
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:unchecked()}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 644).
-spec construct0(expression(fun(() -> HQD))) -> expression(HQD).
construct0(Constructor) ->
{expression,
{single_constructor,
begin
_pipe = Constructor,
gleamgen_ffi:identity(_pipe)
end},
gleamgen@types:unchecked()}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 675).
?DOC(false).
-spec new_use(
expression(any()),
list(expression(gleamgen@types:unchecked())),
list(binary())
) -> expression(gleamgen@types:unchecked()).
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("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 708).
?DOC(" Convert an expression to any type without checking\n").
-spec unsafe_from_unchecked(expression(any())) -> expression(any()).
unsafe_from_unchecked(Type_) ->
gleamgen_ffi:identity(Type_).
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 997).
?DOC(false).
-spec render_attribute(
{binary(), gleamgen@types:generated_type(any())},
gleamgen@render:context()
) -> glam@doc:document().
render_attribute(X, Context) ->
case erlang:element(2, Context) of
true ->
glam@doc:concat(
[glam@doc:from_string(erlang:element(1, X)),
case gleamgen@types:render_type(erlang:element(2, X)) of
{ok, Rendered} ->
glam@doc:concat(
[glam@doc:from_string(<<":"/utf8>>),
{break, <<" "/utf8>>, <<""/utf8>>},
erlang:element(2, Rendered)]
);
{error, nil} ->
{concat, []}
end]
);
false ->
glam@doc:from_string(erlang:element(1, X))
end.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 809).
-spec render_panicking_expression(binary(), gleam@option:option(binary())) -> glam@doc:document().
render_panicking_expression(Name, As_string) ->
case As_string of
{some, Value} ->
_pipe = glam@doc:concat(
[glam@doc:from_string(<<Name/binary, " as"/utf8>>),
{break, <<" "/utf8>>, <<""/utf8>>},
gleamgen@render:escape_string(Value)]
),
glam@doc:group(_pipe);
none ->
glam@doc:from_string(Name)
end.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 723).
-spec render(expression(any()), gleamgen@render:context()) -> gleamgen@render:rendered().
render(Expression, Context) ->
case erlang:element(2, Expression) of
{int_literal, Value} ->
_pipe = Value,
_pipe@1 = gleam@int:to_string(_pipe),
_pipe@2 = glam@doc:from_string(_pipe@1),
{render, _pipe@2, {rendered_details, []}};
{float_literal, Value@1} ->
_pipe@3 = Value@1,
_pipe@4 = gleam@float:to_string(_pipe@3),
_pipe@5 = glam@doc:from_string(_pipe@4),
{render, _pipe@5, {rendered_details, []}};
{str_literal, Value@2} ->
_pipe@6 = gleamgen@render:escape_string(Value@2),
{render, _pipe@6, {rendered_details, []}};
{bool_literal, true} ->
_pipe@7 = glam@doc:from_string(<<"True"/utf8>>),
{render, _pipe@7, {rendered_details, []}};
{bool_literal, false} ->
_pipe@8 = glam@doc:from_string(<<"False"/utf8>>),
{render, _pipe@8, {rendered_details, []}};
nil_literal ->
_pipe@9 = glam@doc:from_string(<<"Nil"/utf8>>),
{render, _pipe@9, {rendered_details, []}};
{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@10 = glam@doc:from_string(Value@3),
{render, _pipe@10, {rendered_details, Used_imports}};
{todo, As_string} ->
_pipe@11 = render_panicking_expression(<<"todo"/utf8>>, As_string),
{render, _pipe@11, {rendered_details, []}};
{panic, As_string@1} ->
_pipe@12 = render_panicking_expression(
<<"panic"/utf8>>,
As_string@1
),
{render, _pipe@12, {rendered_details, []}};
{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>>);
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, 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>>);
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, Context);
{call, Func, Args} ->
render_call(Func, Args, Context);
{single_constructor, Constructor} ->
render_constructor(Constructor, Context);
{block, Expressions} ->
render_block(Expressions, Context);
{equals, Expr1@3, Expr2@3} ->
render_operator(
Expr1@3,
Expr2@3,
glam@doc:from_string(<<"=="/utf8>>),
Context
);
{'case', To_match_on, Matchers} ->
render_case(To_match_on, Matchers, Context);
{use, Func@1, Args@1, Callback_args} ->
render_use(Func@1, Args@1, Callback_args, Context)
end.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 844).
-spec render_case(
expression(gleamgen@types:unchecked()),
list(fun((gleamgen@render:context()) -> gleamgen@render:rendered())),
gleamgen@render:context()
) -> gleamgen@render:rendered().
render_case(To_match_on, Matchers, Context) ->
Rendered_match_on = render(To_match_on, Context),
Matchers@1 = gleam@list:map(Matchers, fun(M) -> M(Context) end),
Matcher_details = gleam@list:fold(
begin
_pipe = Matchers@1,
gleam@list:map(_pipe, fun(M@1) -> erlang:element(3, M@1) end)
end,
{rendered_details, []},
fun gleamgen@render:merge_details/2
),
_pipe@3 = glam@doc:concat(
[glam@doc:from_string(<<"case "/utf8>>),
erlang:element(2, Rendered_match_on),
{break, <<" "/utf8>>, <<""/utf8>>},
gleamgen@render:body(
begin
_pipe@1 = Matchers@1,
_pipe@2 = gleam@list:map(
_pipe@1,
fun(M@2) -> erlang:element(2, M@2) end
),
glam@doc:join(_pipe@2, {line, 1})
end,
true
)]
),
{render,
_pipe@3,
{rendered_details,
lists:append(
erlang:element(2, erlang:element(3, Rendered_match_on)),
erlang:element(2, Matcher_details)
)}}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 911).
-spec render_statement(statement(), gleamgen@render:context()) -> gleamgen@render:rendered().
render_statement(Statement, Context) ->
case Statement of
{let_declaration, Variable, Value} ->
Rendered_value = render(Value, Context),
_pipe = glam@doc:concat(
[glam@doc:from_string(<<"let "/utf8>>),
glam@doc:from_string(Variable),
{break, <<" "/utf8>>, <<""/utf8>>},
glam@doc:from_string(<<"="/utf8>>),
{break, <<" "/utf8>>, <<""/utf8>>},
erlang:element(2, Rendered_value)]
),
{render, _pipe, erlang:element(3, Rendered_value)};
{expression_statement, Expr} ->
render(Expr, Context)
end.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 929).
-spec render_block(list(statement()), gleamgen@render:context()) -> gleamgen@render:rendered().
render_block(Statements, Context) ->
{Inner_statements, Details} = gleam@list:fold(
Statements,
{[], {rendered_details, []}},
fun(Acc, Statement) ->
Rendered = render_statement(
Statement,
begin
_record = Context,
{context, erlang:element(2, _record), true}
end
),
{[erlang:element(2, Rendered) | erlang:element(1, Acc)],
gleamgen@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@render:body(Inner, true);
false ->
Inner
end,
{render, _pipe@2, Details}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 952).
-spec render_expressions(list(expression(any())), gleamgen@render:context()) -> {list(glam@doc:document()),
gleamgen@render:rendered_details()}.
render_expressions(Expressions, Context) ->
{Rendered@1, Details} = gleam@list:fold(
Expressions,
{[], {rendered_details, []}},
fun(Acc, Expr) ->
Rendered = render(Expr, Context),
{[erlang:element(2, Rendered) | erlang:element(1, Acc)],
gleamgen@render:merge_details(
erlang:element(3, Rendered),
erlang:element(2, Acc)
)}
end
),
{begin
_pipe = Rendered@1,
lists:reverse(_pipe)
end,
Details}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 872).
-spec render_tuple(
list(expression(gleamgen@types:unchecked())),
gleamgen@render:context()
) -> gleamgen@render:rendered().
render_tuple(Values, Context) ->
{Rendered_values, Details} = render_expressions(Values, Context),
_pipe = Rendered_values,
_pipe@1 = gleamgen@render:pretty_list(_pipe),
_pipe@2 = glam@doc:prepend(_pipe@1, glam@doc:from_string(<<"#"/utf8>>)),
{render, _pipe@2, Details}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 880).
-spec render_list(
list(expression(gleamgen@types:unchecked())),
gleam@option:option(expression(gleamgen@types:unchecked())),
gleamgen@render:context()
) -> gleamgen@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("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 964).
-spec render_call(
expression(gleamgen@types:unchecked()),
list(expression(gleamgen@types:unchecked())),
gleamgen@render:context()
) -> gleamgen@render:rendered().
render_call(Func, Args, Context) ->
{Rendered_args, Details} = render_expressions(Args, Context),
Caller = render(Func, Context),
_pipe = glam@doc:concat(
[erlang:element(2, Caller), gleamgen@render:pretty_list(Rendered_args)]
),
{render,
_pipe,
gleamgen@render:merge_details(Details, erlang:element(3, Caller))}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 822).
-spec render_use(
expression(gleamgen@types:unchecked()),
list(expression(gleamgen@types:unchecked())),
list(binary()),
gleamgen@render:context()
) -> gleamgen@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("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 971).
-spec render_constructor(
expression(gleamgen@types:unchecked()),
gleamgen@render:context()
) -> gleamgen@render:rendered().
render_constructor(Func, Context) ->
render(Func, Context).
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 975).
-spec render_operator(
expression(HSM),
expression(HSM),
glam@doc:document(),
gleamgen@render:context()
) -> gleamgen@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@render:merge_details(
erlang:element(3, First_rendered),
erlang:element(3, Second_rendered)
)}.