Current section

Files

Jump to
sprocket src sprocket@render.erl
Raw

src/sprocket@render.erl

-module(sprocket@render).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-define(FILEPATH, "src/sprocket/render.gleam").
-export([renderer/2, render_element/2]).
-export_type([renderer/1]).
-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).
-type renderer(IJY) :: {renderer,
fun((sprocket@internal@reconcile:reconciled_element()) -> IJY)}.
-file("src/sprocket/render.gleam", 13).
?DOC(false).
-spec renderer(
renderer(IJZ),
fun((fun((sprocket@internal@reconcile:reconciled_element()) -> IJZ)) -> IKB)
) -> IKB.
renderer(R, Cb) ->
Cb(erlang:element(2, R)).
-file("src/sprocket/render.gleam", 21).
?DOC(false).
-spec render_element(sprocket@internal@context:element(), renderer(IKC)) -> IKC.
render_element(El, R) ->
renderer(
R,
fun(Render) ->
Cuid_channel@1 = case begin
_pipe = sprocket@internal@utils@cuid:start(),
gleam@result:map_error(
_pipe,
fun(Error) ->
sprocket@internal@logger:error(
<<"render.render: Failed to start a cuid channel"/utf8>>
),
Error
end
)
end of
{ok, Cuid_channel} -> Cuid_channel;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"sprocket/render"/utf8>>,
function => <<"render_element"/utf8>>,
line => 26,
value => _assert_fail,
start => 823,
'end' => 992,
pattern_start => 834,
pattern_end => 850})
end,
Dispatch_client_hook_event = fun(_, _, _) -> nil end,
Trigger_reconciliation = fun() -> nil end,
Update_hook = fun(_, _) -> nil end,
Ctx = sprocket@internal@context:new(
El,
Cuid_channel@1,
Dispatch_client_hook_event,
Trigger_reconciliation,
Update_hook
),
{reconciled_result, _, Reconciled} = sprocket@internal@reconcilers@recursive:reconcile(
Ctx,
El,
none,
none
),
Render(Reconciled)
end
).