-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])}.