-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_(GUA))) -> nakai@html:node_(GUA). const_component(Func) -> {component, Func}. -spec component(fun((GUD) -> nakai@html:node_(GUE)), GUD) -> nakai@html:node_(GUE). component(Func, Props) -> {component, fun() -> Func(Props) end}. -spec fragment(list(nakai@html:node_(GUH))) -> nakai@html:node_(GUH). 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.