-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>>; _ -> <> 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>>).