Current section

Files

Jump to
sqlode src sqlode@internal@codegen@builder.erl
Raw

src/sqlode@internal@codegen@builder.erl

-module(sqlode@internal@codegen@builder).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/sqlode/internal/codegen/builder.gleam").
-export([empty/0, line/1, lines/1, blank/0, concat/1, indent/2, render/1]).
-export_type([block/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.
?MODULEDOC(false).
-opaque block() :: {block, list(binary())}.
-file("src/sqlode/internal/codegen/builder.gleam", 20).
?DOC(false).
-spec empty() -> block().
empty() ->
{block, []}.
-file("src/sqlode/internal/codegen/builder.gleam", 25).
?DOC(false).
-spec line(binary()) -> block().
line(Value) ->
{block, [Value]}.
-file("src/sqlode/internal/codegen/builder.gleam", 30).
?DOC(false).
-spec lines(list(binary())) -> block().
lines(Values) ->
{block, Values}.
-file("src/sqlode/internal/codegen/builder.gleam", 35).
?DOC(false).
-spec blank() -> block().
blank() ->
{block, [<<""/utf8>>]}.
-file("src/sqlode/internal/codegen/builder.gleam", 40).
?DOC(false).
-spec concat(list(block())) -> block().
concat(Parts) ->
{block, gleam@list:flat_map(Parts, fun(B) -> erlang:element(2, B) end)}.
-file("src/sqlode/internal/codegen/builder.gleam", 46).
?DOC(false).
-spec indent(block(), integer()) -> block().
indent(Block, By) ->
Prefix = gleam@string:repeat(<<" "/utf8>>, By),
{block, gleam@list:map(erlang:element(2, Block), fun(L) -> case L of
<<""/utf8>> ->
<<""/utf8>>;
_ ->
<<Prefix/binary, L/binary>>
end end)}.
-file("src/sqlode/internal/codegen/builder.gleam", 59).
?DOC(false).
-spec render(block()) -> binary().
render(Block) ->
gleam@string:join(erlang:element(2, Block), <<"\n"/utf8>>).