Current section

Files

Jump to
gleamgen src gleamgen@render.erl
Raw

src/gleamgen@render.erl

-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]).
-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).
-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).
-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, <<Escaped/binary, "\\\""/utf8>>);
{ok, {C, Rest@1}} ->
do_escape_string(Rest@1, <<Escaped/binary, C/binary>>);
{error, nil} ->
Escaped
end.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/render.gleam", 68).
-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>>)]
).