-module(internal@codegen@modules). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([empty/0, add_functions/2, add_imports/2, merge/2, to_string/1]). -export_type([mod/0]). -type mod() :: {mod, binary(), list(internal@codegen@statements:gleam_statement()), list(internal@codegen@types:gleam_type()), list(binary())}. -file("/Users/cdaringe/src/gserde/src/internal/codegen/modules.gleam", 16). -spec empty() -> mod(). empty() -> {mod, <<""/utf8>>, [], [], []}. -file("/Users/cdaringe/src/gserde/src/internal/codegen/modules.gleam", 20). -spec add_functions(mod(), list(internal@codegen@statements:gleam_statement())) -> mod(). add_functions(Mod, Functions) -> erlang:setelement( 3, Mod, gleam@list:concat([erlang:element(3, Mod), Functions]) ). -file("/Users/cdaringe/src/gserde/src/internal/codegen/modules.gleam", 24). -spec add_imports(mod(), list(binary())) -> mod(). add_imports(Mod, Imports) -> erlang:setelement( 5, Mod, gleam@list:concat([erlang:element(5, Mod), Imports]) ). -file("/Users/cdaringe/src/gserde/src/internal/codegen/modules.gleam", 28). -spec merge(mod(), mod()) -> mod(). merge(M1, M2) -> {mod, erlang:element(2, M1), gleam@list:concat([erlang:element(3, M1), erlang:element(3, M2)]), gleam@list:concat([erlang:element(4, M1), erlang:element(4, M2)]), begin _pipe = gleam@list:concat( [erlang:element(5, M1), erlang:element(5, M2)] ), _pipe@1 = gleam@set:from_list(_pipe), gleam@set:to_list(_pipe@1) end}. -file("/Users/cdaringe/src/gserde/src/internal/codegen/modules.gleam", 39). -spec to_string(mod()) -> binary(). to_string(M) -> _pipe = gleam@list:concat( [gleam@list:map( erlang:element(5, M), fun(I) -> <<"import "/utf8, I/binary>> end ), gleam@list:map( erlang:element(4, M), fun internal@codegen@types:generate_type_def/1 ), gleam@list:map( erlang:element(3, M), fun internal@codegen@statements:generate/1 )] ), gleam@string:join(_pipe, <<"\n"/utf8>>).