Current section

Files

Jump to
nakai src nakai.erl
Raw

src/nakai.erl

-module(nakai).
-compile(no_auto_import).
-export([const_component/1, component/2, fragment/1, nothing/0, render/1, render_with_doctype/2, render_with_banner_comment/2]).
-spec const_component(fun(() -> nakai@html:node_(GUX))) -> nakai@html:node_(GUX).
const_component(Func) ->
{component, Func}.
-spec component(fun((GVA) -> nakai@html:node_(GVB)), GVA) -> nakai@html:node_(GVB).
component(Func, Props) ->
{component, fun() -> Func(Props) end}.
-spec fragment(list(nakai@html:node_(GVE))) -> nakai@html:node_(GVE).
fragment(Children) ->
{fragment, Children}.
-spec nothing() -> nakai@html:node_(any()).
nothing() ->
nothing.
-spec render(nakai@html:node_(any())) -> binary().
render(Root) ->
_pipe = gleam@string_builder:concat(
[nakai@render:render_doctype(nakai@html:doctype(<<"html"/utf8>>)),
gleam@string_builder:from_string(<<"\n"/utf8>>),
nakai@render:render_root(Root),
gleam@string_builder:from_string(<<"\n"/utf8>>)]
),
gleam@string_builder:to_string(_pipe).
-spec render_with_doctype(nakai@html@doctype:doctype(), nakai@html:node_(any())) -> binary().
render_with_doctype(Doctype, Root) ->
_pipe = gleam@string_builder:concat(
[nakai@render:render_doctype(Doctype),
gleam@string_builder:from_string(<<"\n"/utf8>>),
nakai@render:render_root(Root),
gleam@string_builder:from_string(<<"\n"/utf8>>)]
),
gleam@string_builder:to_string(_pipe).
-spec render_with_banner_comment(nakai@html:node_(any()), binary()) -> binary().
render_with_banner_comment(Root, Content) ->
_pipe = gleam@string_builder:concat(
[do_not_use_render_node({comment, Content}),
gleam@string_builder:from_string(<<"\n"/utf8>>),
nakai@render:render_doctype(nakai@html:doctype(<<"html"/utf8>>)),
gleam@string_builder:from_string(<<"\n"/utf8>>),
nakai@render:render_root(Root),
gleam@string_builder:from_string(<<"\n"/utf8>>)]
),
gleam@string_builder:to_string(_pipe).
-spec do_not_use_render_node(nakai@html:node_(any())) -> gleam@string_builder:string_builder().
do_not_use_render_node(Node) ->
{state, _@1, B, _@2} = nakai@render:render_node(Node),
B.