Current section

Files

Jump to
gleamgen src gleamgen@types.erl
Raw

src/gleamgen@types.erl

-module(gleamgen@types).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([bool/0, generic/1, string/0, int/0, float/0, nil/0, unchecked_ident/1, unchecked/0, to_unchecked/1, list/1, tuple1/1, tuple2/2, tuple3/3, tuple4/4, tuple5/5, tuple6/6, tuple7/7, tuple8/8, tuple9/9, function0/1, function1/2, function2/3, unsafe_from_unchecked/1, render_type/1]).
-export_type([unchecked/0, generated_type/1]).
-type unchecked() :: any().
-opaque generated_type(GER) :: generated_bool |
generated_string |
generated_int |
generated_float |
generated_nil |
{generated_list, generated_type(unchecked())} |
{generated_tuple, list(generated_type(unchecked()))} |
{generated_function,
list(generated_type(unchecked())),
generated_type(unchecked())} |
unchecked |
{unchecked_ident, binary()} |
{generic, binary()} |
{gleam_phantom, GER}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 22).
-spec bool() -> generated_type(boolean()).
bool() ->
generated_bool.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 26).
-spec generic(binary()) -> generated_type(any()).
generic(Name) ->
{generic, Name}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 30).
-spec string() -> generated_type(binary()).
string() ->
generated_string.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 34).
-spec int() -> generated_type(integer()).
int() ->
generated_int.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 38).
-spec float() -> generated_type(float()).
float() ->
generated_float.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 42).
-spec nil() -> generated_type(nil).
nil() ->
generated_nil.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 187).
-spec unchecked_ident(binary()) -> generated_type(any()).
unchecked_ident(Name) ->
{unchecked_ident, Name}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 191).
-spec unchecked() -> generated_type(any()).
unchecked() ->
unchecked.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 219).
-spec to_unchecked(generated_type(any())) -> generated_type(unchecked()).
to_unchecked(Type_) ->
gleamgen_ffi:identity(Type_).
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 46).
-spec list(generated_type(GEZ)) -> generated_type(list(GEZ)).
list(Type_) ->
{generated_list,
begin
_pipe = Type_,
gleamgen_ffi:identity(_pipe)
end}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 50).
-spec tuple1(generated_type(GFD)) -> generated_type({GFD}).
tuple1(Type1) ->
{generated_tuple,
[begin
_pipe = Type1,
gleamgen_ffi:identity(_pipe)
end]}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 54).
-spec tuple2(generated_type(GFG), generated_type(GFI)) -> generated_type({GFG,
GFI}).
tuple2(Type1, Type2) ->
{generated_tuple,
[begin
_pipe = Type1,
gleamgen_ffi:identity(_pipe)
end,
begin
_pipe@1 = Type2,
gleamgen_ffi:identity(_pipe@1)
end]}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 61).
-spec tuple3(generated_type(GFL), generated_type(GFN), generated_type(GFP)) -> generated_type({GFL,
GFN,
GFP}).
tuple3(Type1, Type2, Type3) ->
{generated_tuple,
[begin
_pipe = Type1,
gleamgen_ffi:identity(_pipe)
end,
begin
_pipe@1 = Type2,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Type3,
gleamgen_ffi:identity(_pipe@2)
end]}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 73).
-spec tuple4(
generated_type(GFS),
generated_type(GFU),
generated_type(GFW),
generated_type(GFY)
) -> generated_type({GFS, GFU, GFW, GFY}).
tuple4(Type1, Type2, Type3, Type4) ->
{generated_tuple,
[begin
_pipe = Type1,
gleamgen_ffi:identity(_pipe)
end,
begin
_pipe@1 = Type2,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Type3,
gleamgen_ffi:identity(_pipe@2)
end,
begin
_pipe@3 = Type4,
gleamgen_ffi:identity(_pipe@3)
end]}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 87).
-spec tuple5(
generated_type(GGB),
generated_type(GGD),
generated_type(GGF),
generated_type(GGH),
generated_type(GGJ)
) -> generated_type({GGB, GGD, GGF, GGH, GGJ}).
tuple5(Type1, Type2, Type3, Type4, Type5) ->
{generated_tuple,
[begin
_pipe = Type1,
gleamgen_ffi:identity(_pipe)
end,
begin
_pipe@1 = Type2,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Type3,
gleamgen_ffi:identity(_pipe@2)
end,
begin
_pipe@3 = Type4,
gleamgen_ffi:identity(_pipe@3)
end,
begin
_pipe@4 = Type5,
gleamgen_ffi:identity(_pipe@4)
end]}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 103).
-spec tuple6(
generated_type(GGM),
generated_type(GGO),
generated_type(GGQ),
generated_type(GGS),
generated_type(GGU),
generated_type(GGW)
) -> generated_type({GGM, GGO, GGQ, GGS, GGU, GGW}).
tuple6(Type1, Type2, Type3, Type4, Type5, Type6) ->
{generated_tuple,
[begin
_pipe = Type1,
gleamgen_ffi:identity(_pipe)
end,
begin
_pipe@1 = Type2,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Type3,
gleamgen_ffi:identity(_pipe@2)
end,
begin
_pipe@3 = Type4,
gleamgen_ffi:identity(_pipe@3)
end,
begin
_pipe@4 = Type5,
gleamgen_ffi:identity(_pipe@4)
end,
begin
_pipe@5 = Type6,
gleamgen_ffi:identity(_pipe@5)
end]}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 121).
-spec tuple7(
generated_type(GGZ),
generated_type(GHB),
generated_type(GHD),
generated_type(GHF),
generated_type(GHH),
generated_type(GHJ),
generated_type(GHL)
) -> generated_type({GGZ, GHB, GHD, GHF, GHH, GHJ, GHL}).
tuple7(Type1, Type2, Type3, Type4, Type5, Type6, Type7) ->
{generated_tuple,
[begin
_pipe = Type1,
gleamgen_ffi:identity(_pipe)
end,
begin
_pipe@1 = Type2,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Type3,
gleamgen_ffi:identity(_pipe@2)
end,
begin
_pipe@3 = Type4,
gleamgen_ffi:identity(_pipe@3)
end,
begin
_pipe@4 = Type5,
gleamgen_ffi:identity(_pipe@4)
end,
begin
_pipe@5 = Type6,
gleamgen_ffi:identity(_pipe@5)
end,
begin
_pipe@6 = Type7,
gleamgen_ffi:identity(_pipe@6)
end]}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 141).
-spec tuple8(
generated_type(GHO),
generated_type(GHQ),
generated_type(GHS),
generated_type(GHU),
generated_type(GHW),
generated_type(GHY),
generated_type(GIA),
generated_type(GIC)
) -> generated_type({GHO, GHQ, GHS, GHU, GHW, GHY, GIA, GIC}).
tuple8(Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8) ->
{generated_tuple,
[begin
_pipe = Type1,
gleamgen_ffi:identity(_pipe)
end,
begin
_pipe@1 = Type2,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Type3,
gleamgen_ffi:identity(_pipe@2)
end,
begin
_pipe@3 = Type4,
gleamgen_ffi:identity(_pipe@3)
end,
begin
_pipe@4 = Type5,
gleamgen_ffi:identity(_pipe@4)
end,
begin
_pipe@5 = Type6,
gleamgen_ffi:identity(_pipe@5)
end,
begin
_pipe@6 = Type7,
gleamgen_ffi:identity(_pipe@6)
end,
begin
_pipe@7 = Type8,
gleamgen_ffi:identity(_pipe@7)
end]}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 163).
-spec tuple9(
generated_type(GIF),
generated_type(GIH),
generated_type(GIJ),
generated_type(GIL),
generated_type(GIN),
generated_type(GIP),
generated_type(GIR),
generated_type(GIT),
generated_type(GIV)
) -> generated_type({GIF, GIH, GIJ, GIL, GIN, GIP, GIR, GIT, GIV}).
tuple9(Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9) ->
{generated_tuple,
[begin
_pipe = Type1,
gleamgen_ffi:identity(_pipe)
end,
begin
_pipe@1 = Type2,
gleamgen_ffi:identity(_pipe@1)
end,
begin
_pipe@2 = Type3,
gleamgen_ffi:identity(_pipe@2)
end,
begin
_pipe@3 = Type4,
gleamgen_ffi:identity(_pipe@3)
end,
begin
_pipe@4 = Type5,
gleamgen_ffi:identity(_pipe@4)
end,
begin
_pipe@5 = Type6,
gleamgen_ffi:identity(_pipe@5)
end,
begin
_pipe@6 = Type7,
gleamgen_ffi:identity(_pipe@6)
end,
begin
_pipe@7 = Type8,
gleamgen_ffi:identity(_pipe@7)
end,
begin
_pipe@8 = Type9,
gleamgen_ffi:identity(_pipe@8)
end]}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 195).
-spec function0(generated_type(GJC)) -> generated_type(fun(() -> GJC)).
function0(Returns) ->
{generated_function,
[],
begin
_pipe = Returns,
gleamgen_ffi:identity(_pipe)
end}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 199).
-spec function1(generated_type(GJF), generated_type(GJH)) -> generated_type(fun((GJF) -> GJH)).
function1(Arg1, Returns) ->
{generated_function,
[begin
_pipe = Arg1,
gleamgen_ffi:identity(_pipe)
end],
begin
_pipe@1 = Returns,
gleamgen_ffi:identity(_pipe@1)
end}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 206).
-spec function2(generated_type(GJK), generated_type(GJM), generated_type(GJO)) -> generated_type(fun((GJK, GJM) -> GJO)).
function2(Arg1, Arg2, Returns) ->
{generated_function,
[begin
_pipe = Arg1,
gleamgen_ffi:identity(_pipe)
end,
begin
_pipe@1 = Arg2,
gleamgen_ffi:identity(_pipe@1)
end],
begin
_pipe@2 = Returns,
gleamgen_ffi:identity(_pipe@2)
end}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 223).
-spec unsafe_from_unchecked(generated_type(unchecked())) -> generated_type(any()).
unsafe_from_unchecked(Type_) ->
gleamgen_ffi:identity(Type_).
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 245).
-spec render_list(generated_type(unchecked())) -> {ok,
gleamgen@render:rendered()} |
{error, nil}.
render_list(Type_) ->
gleam@result:'try'(
render_type(Type_),
fun(Rendered) -> _pipe = glam@doc:from_string(<<"List"/utf8>>),
_pipe@1 = glam@doc:append(
_pipe,
gleamgen@render:pretty_list([erlang:element(2, Rendered)])
),
_pipe@2 = {render, _pipe@1},
{ok, _pipe@2} end
).
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 227).
-spec render_type(generated_type(any())) -> {ok, gleamgen@render:rendered()} |
{error, nil}.
render_type(Type_) ->
case Type_ of
generated_bool ->
_pipe = glam@doc:from_string(<<"Bool"/utf8>>),
_pipe@1 = {render, _pipe},
{ok, _pipe@1};
generated_string ->
_pipe@2 = glam@doc:from_string(<<"String"/utf8>>),
_pipe@3 = {render, _pipe@2},
{ok, _pipe@3};
generated_int ->
_pipe@4 = glam@doc:from_string(<<"Int"/utf8>>),
_pipe@5 = {render, _pipe@4},
{ok, _pipe@5};
generated_float ->
_pipe@6 = glam@doc:from_string(<<"Float"/utf8>>),
_pipe@7 = {render, _pipe@6},
{ok, _pipe@7};
generated_nil ->
_pipe@8 = glam@doc:from_string(<<"Nil"/utf8>>),
_pipe@9 = {render, _pipe@8},
{ok, _pipe@9};
{generated_list, T} ->
render_list(T);
{generated_tuple, T@1} ->
render_tuple(T@1);
unchecked ->
{error, nil};
{unchecked_ident, T@2} ->
_pipe@10 = glam@doc:from_string(T@2),
_pipe@11 = {render, _pipe@10},
{ok, _pipe@11};
{generic, T@3} ->
_pipe@12 = glam@doc:from_string(T@3),
_pipe@13 = {render, _pipe@12},
{ok, _pipe@13};
{generated_function, Args, Return} ->
render_function(Args, Return)
end.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 253).
-spec render_tuple(list(generated_type(unchecked()))) -> {ok,
gleamgen@render:rendered()} |
{error, nil}.
render_tuple(Types) ->
Rendered_types = begin
_pipe = Types,
gleam@list:map(_pipe, fun(T) -> _pipe@1 = render_type(T),
_pipe@2 = gleam@result:map(
_pipe@1,
fun(X) -> erlang:element(2, X) end
),
gleam@result:unwrap(
_pipe@2,
glam@doc:from_string(<<"??"/utf8>>)
) end)
end,
_pipe@3 = glam@doc:from_string(<<"#"/utf8>>),
_pipe@4 = glam@doc:append(
_pipe@3,
gleamgen@render:pretty_list(Rendered_types)
),
_pipe@5 = {render, _pipe@4},
{ok, _pipe@5}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/types.gleam", 269).
-spec render_function(
list(generated_type(unchecked())),
generated_type(unchecked())
) -> {ok, gleamgen@render:rendered()} | {error, nil}.
render_function(Args, Return) ->
gleam@result:'try'(
gleam@list:try_map(Args, fun render_type/1),
fun(Args@1) ->
Return@1 = render_type(Return),
_pipe = glam@doc:concat(
[glam@doc:from_string(<<"fn"/utf8>>),
gleamgen@render:pretty_list(
gleam@list:map(
Args@1,
fun(V) -> erlang:element(2, V) end
)
),
{break, <<" "/utf8>>, <<""/utf8>>},
case Return@1 of
{ok, Ret} ->
glam@doc:concat(
[glam@doc:from_string(<<"->"/utf8>>),
{break, <<" "/utf8>>, <<""/utf8>>},
erlang:element(2, Ret)]
);
{error, _} ->
{concat, []}
end]
),
_pipe@1 = {render, _pipe},
{ok, _pipe@1}
end
).