-module(yum@yaml@parser@block_mapping).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/yum/yaml/parser/block_mapping.gleam").
-export([parser/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(false).
-file("src/yum/yaml/parser/block_mapping.gleam", 160).
?DOC(false).
-spec mapping_node(list({yum@yaml@node:node_(), yum@yaml@node:node_()})) -> yum@yaml@node:node_().
mapping_node(Entries) ->
First@1 = case Entries of
[First | _] -> First;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"yum/yaml/parser/block_mapping"/utf8>>,
function => <<"mapping_node"/utf8>>,
line => 161,
value => _assert_fail,
start => 4526,
'end' => 4558,
pattern_start => 4537,
pattern_end => 4548})
end,
Last = begin
_pipe = Entries,
_pipe@1 = gleam@list:last(_pipe),
gleam@result:unwrap(_pipe@1, First@1)
end,
{First_key, _} = First@1,
{_, Last_value} = Last,
yum@yaml@node:new(
{mapping, Entries},
yum@yaml@parser@span:enclosing(First_key, Last_value),
block_mapping
).
-file("src/yum/yaml/parser/block_mapping.gleam", 177).
?DOC(false).
-spec fail() -> nibble:parser(any(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
fail() ->
nibble:fail(<<"Expected a block mapping"/utf8>>).
-file("src/yum/yaml/parser/block_mapping.gleam", 173).
?DOC(false).
-spec null_at(yum@yaml@node:span()) -> yum@yaml@node:node_().
null_at(Span) ->
yum@yaml@node:new(null, Span, synthetic).
-file("src/yum/yaml/parser/block_mapping.gleam", 120).
?DOC(false).
-spec same_line_mapping_value_parser(
integer(),
fun((integer()) -> 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()).
same_line_mapping_value_parser(Indent, Value_parser) ->
nibble:do(
nibble:token(colon),
fun(_) ->
nibble:do(
nibble:span(),
fun(Colon_span) ->
nibble:do(
nibble:optional(Value_parser(Indent)),
fun(Value) -> _pipe = Value,
_pipe@1 = gleam@option:unwrap(
_pipe,
null_at(
yum@yaml@parser@span:from_lexer(Colon_span)
)
),
nibble:return(_pipe@1) end
)
end
)
end
).
-file("src/yum/yaml/parser/block_mapping.gleam", 133).
?DOC(false).
-spec next_line_mapping_value_parser(
integer(),
fun((integer()) -> 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()).
next_line_mapping_value_parser(Indent, Value_parser) ->
nibble:do(
yum@yaml@parser@indentation:same_amount_parser(Indent),
fun(_use0) ->
nil = _use0,
same_line_mapping_value_parser(Indent, Value_parser)
end
).
-file("src/yum/yaml/parser/block_mapping.gleam", 110).
?DOC(false).
-spec mapping_value_parser(
integer(),
fun((integer()) -> 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()).
mapping_value_parser(Indent, Value_parser) ->
nibble:one_of(
[same_line_mapping_value_parser(Indent, Value_parser),
nibble:backtrackable(
next_line_mapping_value_parser(Indent, Value_parser)
)]
).
-file("src/yum/yaml/parser/block_mapping.gleam", 102).
?DOC(false).
-spec implicit_json_mapping_key_parser() -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
implicit_json_mapping_key_parser() ->
nibble:one_of(
[yum@yaml@parser@flow_collection:parser(),
yum@yaml@parser@double_quoted:parser(),
yum@yaml@parser@single_quoted:parser()]
).
-file("src/yum/yaml/parser/block_mapping.gleam", 92).
?DOC(false).
-spec implicit_json_mapping_entry_parser(
integer(),
fun((integer()) -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()))
) -> nibble:parser({yum@yaml@node:node_(), yum@yaml@node:node_()}, yum@yaml@token:token(), yum@yaml@lexer@context:context()).
implicit_json_mapping_entry_parser(Indent, Value_parser) ->
nibble:do(
implicit_json_mapping_key_parser(),
fun(Key) ->
nibble:do(
mapping_value_parser(Indent, Value_parser),
fun(Value) -> nibble:return({Key, Value}) end
)
end
).
-file("src/yum/yaml/parser/block_mapping.gleam", 156).
?DOC(false).
-spec pair_with(yum@yaml@node:node_(), yum@yaml@node:node_()) -> {yum@yaml@node:node_(),
yum@yaml@node:node_()}.
pair_with(Value, Key) ->
{Key, Value}.
-file("src/yum/yaml/parser/block_mapping.gleam", 141).
?DOC(false).
-spec mapping_key_parser() -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
mapping_key_parser() ->
nibble:do(
nibble:take_map(
<<"Expected a block mapping key"/utf8>>,
fun(Tok) -> case Tok of
{mapping_key, Value} ->
yum@yaml@parser@scalar:parse(Value);
_ ->
none
end end
),
fun(Kind) ->
nibble:do(
nibble:span(),
fun(Token_span) ->
_pipe = yum@yaml@node:new(
Kind,
yum@yaml@parser@span:from_lexer(Token_span),
plain_scalar
),
nibble:return(_pipe)
end
)
end
).
-file("src/yum/yaml/parser/block_mapping.gleam", 79).
?DOC(false).
-spec implicit_plain_mapping_entry_parser(
integer(),
fun((integer()) -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()))
) -> nibble:parser({yum@yaml@node:node_(), yum@yaml@node:node_()}, yum@yaml@token:token(), yum@yaml@lexer@context:context()).
implicit_plain_mapping_entry_parser(Indent, Implicit_value_parser) ->
nibble:do(
mapping_key_parser(),
fun(Key) ->
nibble:do(
nibble:optional(Implicit_value_parser(Indent)),
fun(Value) -> _pipe = Value,
_pipe@1 = gleam@option:unwrap(
_pipe,
null_at(yum@yaml@node:span(Key))
),
_pipe@2 = pair_with(_pipe@1, Key),
nibble:return(_pipe@2) end
)
end
).
-file("src/yum/yaml/parser/block_mapping.gleam", 66).
?DOC(false).
-spec implicit_mapping_entry_parser(
integer(),
fun((integer()) -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()))
) -> nibble:parser({yum@yaml@node:node_(), yum@yaml@node:node_()}, yum@yaml@token:token(), yum@yaml@lexer@context:context()).
implicit_mapping_entry_parser(Indent, Value_parser) ->
nibble:one_of(
[implicit_plain_mapping_entry_parser(Indent, Value_parser),
nibble:backtrackable(
implicit_json_mapping_entry_parser(Indent, Value_parser)
)]
).
-file("src/yum/yaml/parser/block_mapping.gleam", 57).
?DOC(false).
-spec empty_key_mapping_entry_parser(
integer(),
fun((integer()) -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()))
) -> nibble:parser({yum@yaml@node:node_(), yum@yaml@node:node_()}, yum@yaml@token:token(), yum@yaml@lexer@context:context()).
empty_key_mapping_entry_parser(Indent, Value_parser) ->
nibble:do(
mapping_value_parser(Indent, Value_parser),
fun(Value) ->
nibble:return({null_at(yum@yaml@node:span(Value)), Value})
end
).
-file("src/yum/yaml/parser/block_mapping.gleam", 44).
?DOC(false).
-spec explicit_mapping_entry_parser(
integer(),
fun((integer()) -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()))
) -> nibble:parser({yum@yaml@node:node_(), yum@yaml@node:node_()}, yum@yaml@token:token(), yum@yaml@lexer@context:context()).
explicit_mapping_entry_parser(Indent, Value_parser) ->
nibble:do(
nibble:token(question_mark),
fun(_) ->
nibble:do(
nibble:span(),
fun(Marker_span) ->
nibble:do(
nibble:optional(Value_parser(Indent)),
fun(Key) ->
nibble:do(
nibble:optional(
mapping_value_parser(Indent, Value_parser)
),
fun(Value) ->
Default = null_at(
yum@yaml@parser@span:from_lexer(
Marker_span
)
),
nibble:return(
{begin
_pipe = Key,
gleam@option:unwrap(
_pipe,
Default
)
end,
begin
_pipe@1 = Value,
gleam@option:unwrap(
_pipe@1,
Default
)
end}
)
end
)
end
)
end
)
end
).
-file("src/yum/yaml/parser/block_mapping.gleam", 33).
?DOC(false).
-spec mapping_entry_parser(
integer(),
fun((integer()) -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()))
) -> nibble:parser({yum@yaml@node:node_(), yum@yaml@node:node_()}, yum@yaml@token:token(), yum@yaml@lexer@context:context()).
mapping_entry_parser(Indent, Value_parser) ->
nibble:one_of(
[explicit_mapping_entry_parser(Indent, Value_parser),
empty_key_mapping_entry_parser(Indent, Value_parser),
implicit_mapping_entry_parser(Indent, Value_parser)]
).
-file("src/yum/yaml/parser/block_mapping.gleam", 15).
?DOC(false).
-spec parser(
integer(),
fun((integer()) -> 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(Indent, Value_parser) ->
nibble:do(
nibble:sequence(
mapping_entry_parser(Indent, Value_parser),
yum@yaml@parser@indentation:block_separator_parser(Indent)
),
fun(Entries) -> case Entries of
[] ->
fail();
[_ | _] ->
_pipe = Entries,
_pipe@1 = mapping_node(_pipe),
nibble:return(_pipe@1)
end end
).