Packages

KDL v2 parser, serializer, normalizer, and document builder for Gleam

Current section

Files

Jump to
kdleam src kdleam@builder.erl
Raw

src/kdleam@builder.erl

-module(kdleam@builder).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/kdleam/builder.gleam").
-export([document/0, node/1, typed_node/2, add_arg/2, add_typed_arg/3, add_prop/3, add_typed_prop/4, add_child/2, add_node/2]).
-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(" KDL 文書とノードを構築する。\n").
-file("src/kdleam/builder.gleam", 10).
?DOC(" 空の文書を作る。\n").
-spec document() -> kdleam@document:kdl_document().
document() ->
{kdl_document, []}.
-file("src/kdleam/builder.gleam", 15).
?DOC(" 型注釈、項目、子ブロックを持たないノードを作る。\n").
-spec node(binary()) -> kdleam@document:kdl_node().
node(Name) ->
{kdl_node, none, Name, [], none}.
-file("src/kdleam/builder.gleam", 20).
?DOC(" ノードへ型注釈を設定する。\n").
-spec typed_node(kdleam@document:kdl_node(), binary()) -> kdleam@document:kdl_node().
typed_node(Node, Ty) ->
{kdl_node, _, Name, Entries, Children} = Node,
{kdl_node, {some, Ty}, Name, Entries, Children}.
-file("src/kdleam/builder.gleam", 73).
-spec add_entry(kdleam@document:kdl_node(), kdleam@document:kdl_entry()) -> kdleam@document:kdl_node().
add_entry(Node, Entry) ->
{kdl_node, Ty, Name, Entries, Children} = Node,
{kdl_node, Ty, Name, lists:append(Entries, [Entry]), Children}.
-file("src/kdleam/builder.gleam", 32).
?DOC(" 型注釈を持たない引数を末尾へ加える。\n").
-spec add_arg(kdleam@document:kdl_node(), kdleam@document:kdl_value()) -> kdleam@document:kdl_node().
add_arg(Node, Value) ->
add_entry(Node, {kdl_argument, none, Value}).
-file("src/kdleam/builder.gleam", 37).
?DOC(" 型注釈を持つ引数を末尾へ加える。\n").
-spec add_typed_arg(
kdleam@document:kdl_node(),
binary(),
kdleam@document:kdl_value()
) -> kdleam@document:kdl_node().
add_typed_arg(Node, Ty, Value) ->
add_entry(Node, {kdl_argument, {some, Ty}, Value}).
-file("src/kdleam/builder.gleam", 42).
?DOC(" 型注釈を持たないプロパティを末尾へ加える。\n").
-spec add_prop(
kdleam@document:kdl_node(),
binary(),
kdleam@document:kdl_value()
) -> kdleam@document:kdl_node().
add_prop(Node, Key, Value) ->
add_entry(Node, {kdl_property, Key, none, Value}).
-file("src/kdleam/builder.gleam", 47).
?DOC(" 型注釈を持つプロパティを末尾へ加える。\n").
-spec add_typed_prop(
kdleam@document:kdl_node(),
binary(),
binary(),
kdleam@document:kdl_value()
) -> kdleam@document:kdl_node().
add_typed_prop(Node, Key, Ty, Value) ->
add_entry(Node, {kdl_property, Key, {some, Ty}, Value}).
-file("src/kdleam/builder.gleam", 57).
?DOC(" 子ノードを末尾へ加える。\n").
-spec add_child(kdleam@document:kdl_node(), kdleam@document:kdl_node()) -> kdleam@document:kdl_node().
add_child(Node, Child) ->
{kdl_node, Ty, Name, Entries, Children} = Node,
Kids@1 = case Children of
{some, Kids} ->
lists:append(Kids, [Child]);
none ->
[Child]
end,
{kdl_node, Ty, Name, Entries, {some, Kids@1}}.
-file("src/kdleam/builder.gleam", 68).
?DOC(" 文書の末尾へノードを加える。\n").
-spec add_node(kdleam@document:kdl_document(), kdleam@document:kdl_node()) -> kdleam@document:kdl_document().
add_node(Doc, Node) ->
{kdl_document, Nodes} = Doc,
{kdl_document, lists:append(Nodes, [Node])}.