Current section

Files

Jump to
nakai src nakai@internal@document.erl
Raw

src/nakai@internal@document.erl

-module(nakai@internal@document).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([new/0, merge/2, concat/1, from_doctype/1, append_html_attrs/2, append_body_attrs/2, from_head/1, append_head/2, from_body/1, append_body/2, replace_body/2, from_script/1, into_head/1]).
-export_type([document/0]).
-type document() :: {document,
gleam@option:option(binary()),
gleam@string_tree:string_tree(),
gleam@string_tree:string_tree(),
gleam@string_tree:string_tree(),
gleam@string_tree:string_tree(),
list(gleam@string_tree:string_tree())}.
-file("/home/runner/work/nakai/nakai/src/nakai/internal/document.gleam", 21).
-spec new() -> document().
new() ->
{document,
none,
gleam@string_tree:new(),
gleam@string_tree:new(),
gleam@string_tree:new(),
gleam@string_tree:new(),
[]}.
-file("/home/runner/work/nakai/nakai/src/nakai/internal/document.gleam", 32).
-spec merge(document(), document()) -> document().
merge(Self, New) ->
{document,
gleam@option:'or'(erlang:element(2, New), erlang:element(2, Self)),
gleam@string_tree:append_tree(
erlang:element(3, Self),
erlang:element(3, New)
),
gleam@string_tree:append_tree(
erlang:element(4, Self),
erlang:element(4, New)
),
gleam@string_tree:append_tree(
erlang:element(5, Self),
erlang:element(5, New)
),
gleam@string_tree:append_tree(
erlang:element(6, Self),
erlang:element(6, New)
),
lists:append(erlang:element(7, Self), erlang:element(7, New))}.
-file("/home/runner/work/nakai/nakai/src/nakai/internal/document.gleam", 44).
-spec concat(list(document())) -> document().
concat(Docs) ->
_pipe = Docs,
gleam@list:fold(_pipe, new(), fun merge/2).
-file("/home/runner/work/nakai/nakai/src/nakai/internal/document.gleam", 49).
-spec from_doctype(binary()) -> document().
from_doctype(Doctype) ->
erlang:setelement(2, new(), {some, Doctype}).
-file("/home/runner/work/nakai/nakai/src/nakai/internal/document.gleam", 53).
-spec append_html_attrs(document(), gleam@string_tree:string_tree()) -> document().
append_html_attrs(Self, Html_attrs) ->
erlang:setelement(
3,
Self,
gleam@string_tree:append_tree(erlang:element(3, Self), Html_attrs)
).
-file("/home/runner/work/nakai/nakai/src/nakai/internal/document.gleam", 60).
-spec append_body_attrs(document(), gleam@string_tree:string_tree()) -> document().
append_body_attrs(Self, Body_attrs) ->
erlang:setelement(
4,
Self,
gleam@string_tree:append_tree(erlang:element(4, Self), Body_attrs)
).
-file("/home/runner/work/nakai/nakai/src/nakai/internal/document.gleam", 67).
-spec from_head(gleam@string_tree:string_tree()) -> document().
from_head(Head) ->
erlang:setelement(5, new(), Head).
-file("/home/runner/work/nakai/nakai/src/nakai/internal/document.gleam", 71).
-spec append_head(document(), gleam@string_tree:string_tree()) -> document().
append_head(Self, Head) ->
erlang:setelement(
5,
Self,
gleam@string_tree:append_tree(erlang:element(5, Self), Head)
).
-file("/home/runner/work/nakai/nakai/src/nakai/internal/document.gleam", 75).
-spec from_body(gleam@string_tree:string_tree()) -> document().
from_body(Body) ->
erlang:setelement(6, new(), Body).
-file("/home/runner/work/nakai/nakai/src/nakai/internal/document.gleam", 79).
-spec append_body(document(), gleam@string_tree:string_tree()) -> document().
append_body(Self, Body) ->
erlang:setelement(
6,
Self,
gleam@string_tree:append_tree(erlang:element(6, Self), Body)
).
-file("/home/runner/work/nakai/nakai/src/nakai/internal/document.gleam", 83).
-spec replace_body(document(), gleam@string_tree:string_tree()) -> document().
replace_body(Self, Body) ->
erlang:setelement(6, Self, Body).
-file("/home/runner/work/nakai/nakai/src/nakai/internal/document.gleam", 87).
-spec from_script(gleam@string_tree:string_tree()) -> document().
from_script(Script) ->
erlang:setelement(7, new(), [Script]).
-file("/home/runner/work/nakai/nakai/src/nakai/internal/document.gleam", 91).
-spec into_head(document()) -> document().
into_head(State) ->
erlang:setelement(
6,
erlang:setelement(
5,
State,
gleam@string_tree:append_tree(
erlang:element(5, State),
erlang:element(6, State)
)
),
gleam@string_tree:new()
).