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, html/1, none/0, render_doc/2, render/1]).
-spec const_component(fun(() -> nakai@nakai:node_())) -> nakai@nakai:node_().
const_component(Decl) ->
{component, Decl}.
-spec component(fun((EJO) -> nakai@nakai:node_()), EJO) -> nakai@nakai:node_().
component(Decl, Props) ->
{component, fun() -> Decl(Props) end}.
-spec fragment(list(nakai@nakai:node_())) -> nakai@nakai:node_().
fragment(Children) ->
{fragment, Children}.
-spec html(gleam@html:node_()) -> nakai@nakai:node_().
html(Node) ->
{html_node, Node}.
-spec none() -> nakai@nakai:node_().
none() ->
none.
-spec render_doc(gleam@html@doctype:doctype(), nakai@nakai:node_()) -> binary().
render_doc(Doctype, Root) ->
gleam@string_builder:to_string(
gleam@string_builder:concat(
[nakai@render:render_doctype(Doctype),
nakai@render:render_node(Root),
gleam@string_builder:from_string(<<"\n"/utf8>>)]
)
).
-spec render(nakai@nakai:node_()) -> binary().
render(Root) ->
gleam@string_builder:to_string(
gleam@string_builder:concat([nakai@render:render_node(Root)])
).