-module(yum@yaml@parser@node_property).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/yum/yaml/parser/node_property.gleam").
-export([parser/1]).
-export_type([property/0]).
-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(false).
-type property() :: {anchor, binary()} | {tag, binary()}.
-file("src/yum/yaml/parser/node_property.gleam", 53).
?DOC(false).
-spec apply_property(yum@yaml@node:node_(), property()) -> yum@yaml@node:node_().
apply_property(Value, Property) ->
case Property of
{anchor, Anchor} ->
yum@yaml@node:with_anchor(Value, Anchor);
{tag, Tag} ->
yum@yaml@node:with_tag(Value, Tag)
end.
-file("src/yum/yaml/parser/node_property.gleam", 43).
?DOC(false).
-spec apply_properties(list(property()), yum@yaml@node:node_()) -> yum@yaml@node:node_().
apply_properties(Properties, Value) ->
case Properties of
[] ->
Value;
[Property | Rest] ->
Value@1 = apply_property(Value, Property),
apply_properties(Rest, Value@1)
end.
-file("src/yum/yaml/parser/node_property.gleam", 33).
?DOC(false).
-spec property_token_parser() -> nibble:parser(property(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
property_token_parser() ->
nibble:take_map(<<"Expected a node property"/utf8>>, fun(Tok) -> case Tok of
{anchor, Value} ->
{some, {anchor, Value}};
{tag, Value@1} ->
{some, {tag, Value@1}};
_ ->
none
end end).
-file("src/yum/yaml/parser/node_property.gleam", 17).
?DOC(false).
-spec property_parser(
nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context())
) -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
property_parser(Node_parser) ->
nibble:do(
nibble:many(property_token_parser()),
fun(Properties) ->
nibble:do(Node_parser, fun(Value) -> _pipe = Properties,
_pipe@1 = apply_properties(_pipe, Value),
nibble:return(_pipe@1) end)
end
).
-file("src/yum/yaml/parser/node_property.gleam", 60).
?DOC(false).
-spec alias_parser() -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
alias_parser() ->
nibble:do(
nibble:take_map(<<"Expected an alias"/utf8>>, fun(Tok) -> case Tok of
{alias, Value} ->
{some, Value};
_ ->
none
end end),
fun(Alias) ->
nibble:do(
nibble:span(),
fun(Token_span) ->
_pipe = yum@yaml@node:new(
null,
yum@yaml@parser@span:from_lexer(Token_span),
synthetic
),
_pipe@1 = yum@yaml@node:with_alias(_pipe, Alias),
nibble:return(_pipe@1)
end
)
end
).
-file("src/yum/yaml/parser/node_property.gleam", 8).
?DOC(false).
-spec parser(
nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context())
) -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
parser(Node_parser) ->
nibble:one_of([alias_parser(), property_parser(Node_parser)]).