-module(gleamgen@render). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([merge_details/2, default_context/0, to_string/1, pretty_list/1, body/2, escape_string/1]). -export_type([rendered/0, rendered_details/0, context/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. -type rendered() :: {render, glam@doc:document(), rendered_details()}. -type rendered_details() :: {rendered_details, list(binary())}. -type context() :: {context, boolean(), boolean()}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/render.gleam", 15). -spec merge_details(rendered_details(), rendered_details()) -> rendered_details(). merge_details(First, Second) -> {rendered_details, lists:append(erlang:element(2, First), erlang:element(2, Second))}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/render.gleam", 26). -spec default_context() -> context(). default_context() -> {context, true, true}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/render.gleam", 30). -spec to_string(rendered()) -> binary(). to_string(To_render) -> glam@doc:to_string(erlang:element(2, To_render), 80). -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/render.gleam", 35). ?DOC(false). -spec pretty_list(list(glam@doc:document())) -> glam@doc:document(). pretty_list(Parameters) -> Comma = glam@doc:concat( [glam@doc:from_string(<<","/utf8>>), {break, <<" "/utf8>>, <<""/utf8>>}] ), Trailing_comma = glam@doc:break(<<""/utf8>>, <<","/utf8>>), Open_paren = glam@doc:concat( [glam@doc:from_string(<<"("/utf8>>), {break, <<""/utf8>>, <<""/utf8>>}] ), Close_paren = glam@doc:concat( [Trailing_comma, glam@doc:from_string(<<")"/utf8>>)] ), _pipe = Parameters, _pipe@1 = glam@doc:join(_pipe, Comma), _pipe@2 = glam@doc:prepend(_pipe@1, Open_paren), _pipe@3 = glam@doc:nest(_pipe@2, 2), _pipe@4 = glam@doc:append(_pipe@3, Close_paren), glam@doc:group(_pipe@4). -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/render.gleam", 51). ?DOC(false). -spec body(glam@doc:document(), boolean()) -> glam@doc:document(). body(Inside, Force_break) -> Between_brackets = case Force_break of true -> {line, 1}; false -> {break, <<" "/utf8>>, <<""/utf8>>} end, _pipe = Inside, _pipe@1 = glam@doc:prepend( _pipe, glam@doc:concat([glam@doc:from_string(<<"{"/utf8>>), Between_brackets]) ), _pipe@2 = glam@doc:nest(_pipe@1, 2), _pipe@3 = glam@doc:append( _pipe@2, glam@doc:concat([Between_brackets, glam@doc:from_string(<<"}"/utf8>>)]) ), glam@doc:group(_pipe@3). -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/render.gleam", 77). -spec do_escape_string(binary(), binary()) -> binary(). do_escape_string(Original, Escaped) -> case gleam@string:pop_grapheme(Original) of {ok, {<<"\""/utf8>>, Rest}} -> do_escape_string(Rest, <>); {ok, {C, Rest@1}} -> do_escape_string(Rest@1, <>); {error, nil} -> Escaped end. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/render.gleam", 68). ?DOC(false). -spec escape_string(binary()) -> glam@doc:document(). escape_string(String) -> Escaped = do_escape_string(String, <<""/utf8>>), glam@doc:concat( [glam@doc:from_string(<<"\""/utf8>>), glam@doc:from_string(Escaped), glam@doc:from_string(<<"\""/utf8>>)] ).