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]).
-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(MJI) :: {renderer,
fun((sprocket@internal@reconcile:reconciled_element()) -> MJI)}.
-file("src/sprocket/render.gleam", 15).
?DOC(false).
-spec renderer(
renderer(MJJ),
fun((fun((sprocket@internal@reconcile:reconciled_element()) -> MJJ)) -> MJL)
) -> MJL.
renderer(R, Cb) ->
Cb(erlang:element(2, R)).
-file("src/sprocket/render.gleam", 23).
?DOC(false).
-spec render_element(sprocket@internal@context:element(), renderer(MJM)) -> MJM.
render_element(El, R) ->
renderer(
R,
fun(Render) ->
_assert_subject = begin
_pipe = ids@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,
{ok, Cuid_channel} = case _assert_subject of
{ok, _} -> _assert_subject;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
value => _assert_fail,
module => <<"sprocket/render"/utf8>>,
function => <<"render_element"/utf8>>,
line => 28})
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,
Dispatch_client_hook_event,
Trigger_reconciliation,
Update_hook
),
{reconciled_result, _, Reconciled} = sprocket@internal@reconcilers@recursive:reconcile(
Ctx,
El,
none,
none
),
Render(Reconciled)
end
).