-module(yum@yaml@parser@flow_collection).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/yum/yaml/parser/flow_collection.gleam").
-export([parser/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).
-file("src/yum/yaml/parser/flow_collection.gleam", 219).
?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/flow_collection.gleam", 205).
?DOC(false).
-spec mapping_node(
list({yum@yaml@node:node_(), yum@yaml@node:node_()}),
yum@yaml@node:span()
) -> yum@yaml@node:node_().
mapping_node(Entries, Default_span) ->
Mapping_span = case Entries of
[] ->
Default_span;
[First | _] ->
Last = begin
_pipe = Entries,
_pipe@1 = gleam@list:last(_pipe),
gleam@result:unwrap(_pipe@1, First)
end,
{First_key, _} = First,
{_, Last_value} = Last,
yum@yaml@parser@span:enclosing(First_key, Last_value)
end,
yum@yaml@node:new({mapping, Entries}, Mapping_span, flow_mapping).
-file("src/yum/yaml/parser/flow_collection.gleam", 168).
?DOC(false).
-spec plain_mapping_key_parser() -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
plain_mapping_key_parser() ->
nibble:do(
nibble:take_map(
<<"Expected a plain 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/flow_collection.gleam", 60).
?DOC(false).
-spec comma_then(
nibble:parser(NDE, yum@yaml@token:token(), yum@yaml@lexer@context:context())
) -> nibble:parser(NDE, yum@yaml@token:token(), yum@yaml@lexer@context:context()).
comma_then(Parser) ->
_pipe = begin
nibble:do(nibble:token(comma), fun(_) -> Parser end)
end,
nibble:backtrackable(_pipe).
-file("src/yum/yaml/parser/flow_collection.gleam", 49).
?DOC(false).
-spec comma_separated(
nibble:parser(NCW, yum@yaml@token:token(), yum@yaml@lexer@context:context())
) -> nibble:parser(list(NCW), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
comma_separated(Parser) ->
_pipe = begin
nibble:do(
Parser,
fun(First) ->
nibble:do(
nibble:many(comma_then(Parser)),
fun(Rest) -> nibble:return([First | Rest]) end
)
end
)
end,
nibble:'or'(_pipe, []).
-file("src/yum/yaml/parser/flow_collection.gleam", 105).
?DOC(false).
-spec compact_implicit_mapping_or_node_parser() -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
compact_implicit_mapping_or_node_parser() ->
nibble:do(
flow_node_parser(),
fun(Key) ->
nibble:do(
nibble:optional(mapping_value_parser()),
fun(Value) -> case Value of
{some, Value@1} ->
_pipe = mapping_node(
[{Key, Value@1}],
yum@yaml@node:span(Key)
),
nibble:return(_pipe);
none ->
nibble:return(Key)
end end
)
end
).
-file("src/yum/yaml/parser/flow_collection.gleam", 94).
?DOC(false).
-spec compact_plain_mapping_parser() -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
compact_plain_mapping_parser() ->
nibble:do(
plain_mapping_key_parser(),
fun(Key) ->
nibble:do(
begin
_pipe = flow_node_parser(),
nibble:'or'(_pipe, null_at(yum@yaml@node:span(Key)))
end,
fun(Value) ->
_pipe@1 = mapping_node(
[{Key, Value}],
yum@yaml@node:span(Key)
),
nibble:return(_pipe@1)
end
)
end
).
-file("src/yum/yaml/parser/flow_collection.gleam", 87).
?DOC(false).
-spec compact_empty_key_mapping_parser() -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
compact_empty_key_mapping_parser() ->
nibble:do(
mapping_value_parser(),
fun(Value) ->
_pipe = mapping_node(
[{null_at(yum@yaml@node:span(Value)), Value}],
yum@yaml@node:span(Value)
),
nibble:return(_pipe)
end
).
-file("src/yum/yaml/parser/flow_collection.gleam", 77).
?DOC(false).
-spec compact_explicit_mapping_parser() -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
compact_explicit_mapping_parser() ->
nibble:do(
nibble:token(question_mark),
fun(_) ->
nibble:do(
nibble:span(),
fun(Marker_span) ->
nibble:do(
flow_node_parser(),
fun(Key) ->
nibble:do(
mapping_value_parser(),
fun(Value) ->
_pipe = mapping_node(
[{Key, Value}],
yum@yaml@parser@span:from_lexer(
Marker_span
)
),
nibble:return(_pipe)
end
)
end
)
end
)
end
).
-file("src/yum/yaml/parser/flow_collection.gleam", 68).
?DOC(false).
-spec sequence_entry_parser() -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
sequence_entry_parser() ->
nibble:one_of(
[compact_explicit_mapping_parser(),
compact_empty_key_mapping_parser(),
compact_plain_mapping_parser(),
compact_implicit_mapping_or_node_parser()]
).
-file("src/yum/yaml/parser/flow_collection.gleam", 23).
?DOC(false).
-spec sequence_parser() -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
sequence_parser() ->
nibble:do(
nibble:token(open_sequence),
fun(_) ->
nibble:do(
nibble:span(),
fun(Start) ->
nibble:do(
comma_separated(sequence_entry_parser()),
fun(Entries) ->
nibble:do(
nibble:optional(nibble:token(comma)),
fun(_) ->
nibble:do(
nibble:token(close_sequence),
fun(_) ->
nibble:do(
nibble:span(),
fun(End) ->
_pipe = {sequence, Entries},
_pipe@1 = yum@yaml@node:new(
_pipe,
yum@yaml@parser@span:between(
Start,
End
),
flow_sequence
),
nibble:return(_pipe@1)
end
)
end
)
end
)
end
)
end
)
end
).
-file("src/yum/yaml/parser/flow_collection.gleam", 195).
?DOC(false).
-spec bare_flow_node_parser() -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
bare_flow_node_parser() ->
nibble:one_of(
[nibble:lazy(fun sequence_parser/0),
nibble:lazy(fun mapping_parser/0),
yum@yaml@parser@double_quoted:parser(),
yum@yaml@parser@single_quoted:parser(),
yum@yaml@parser@scalar:parser()]
).
-file("src/yum/yaml/parser/flow_collection.gleam", 191).
?DOC(false).
-spec flow_node_parser() -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
flow_node_parser() ->
yum@yaml@parser@node_property:parser(bare_flow_node_parser()).
-file("src/yum/yaml/parser/flow_collection.gleam", 183).
?DOC(false).
-spec mapping_value_parser() -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
mapping_value_parser() ->
nibble:do(
nibble:token(colon),
fun(_) ->
nibble:do(
nibble:span(),
fun(Colon_span) -> _pipe = flow_node_parser(),
nibble:'or'(
_pipe,
null_at(yum@yaml@parser@span:from_lexer(Colon_span))
) end
)
end
).
-file("src/yum/yaml/parser/flow_collection.gleam", 158).
?DOC(false).
-spec key_mapping_entry_parser() -> nibble:parser({yum@yaml@node:node_(),
yum@yaml@node:node_()}, yum@yaml@token:token(), yum@yaml@lexer@context:context()).
key_mapping_entry_parser() ->
nibble:do(
flow_node_parser(),
fun(Key) ->
nibble:do(
begin
_pipe = mapping_value_parser(),
nibble:'or'(_pipe, null_at(yum@yaml@node:span(Key)))
end,
fun(Value) -> nibble:return({Key, Value}) end
)
end
).
-file("src/yum/yaml/parser/flow_collection.gleam", 152).
?DOC(false).
-spec empty_key_mapping_entry_parser() -> nibble:parser({yum@yaml@node:node_(),
yum@yaml@node:node_()}, yum@yaml@token:token(), yum@yaml@lexer@context:context()).
empty_key_mapping_entry_parser() ->
nibble:do(
mapping_value_parser(),
fun(Value) ->
nibble:return({null_at(yum@yaml@node:span(Value)), Value})
end
).
-file("src/yum/yaml/parser/flow_collection.gleam", 142).
?DOC(false).
-spec plain_mapping_entry_parser() -> nibble:parser({yum@yaml@node:node_(),
yum@yaml@node:node_()}, yum@yaml@token:token(), yum@yaml@lexer@context:context()).
plain_mapping_entry_parser() ->
nibble:do(
plain_mapping_key_parser(),
fun(Key) ->
nibble:do(
begin
_pipe = flow_node_parser(),
nibble:'or'(_pipe, null_at(yum@yaml@node:span(Key)))
end,
fun(Value) -> nibble:return({Key, Value}) end
)
end
).
-file("src/yum/yaml/parser/flow_collection.gleam", 134).
?DOC(false).
-spec implicit_mapping_entry_parser() -> nibble:parser({yum@yaml@node:node_(),
yum@yaml@node:node_()}, yum@yaml@token:token(), yum@yaml@lexer@context:context()).
implicit_mapping_entry_parser() ->
nibble:one_of(
[plain_mapping_entry_parser(),
empty_key_mapping_entry_parser(),
key_mapping_entry_parser()]
).
-file("src/yum/yaml/parser/flow_collection.gleam", 123).
?DOC(false).
-spec explicit_mapping_entry_parser() -> nibble:parser({yum@yaml@node:node_(),
yum@yaml@node:node_()}, yum@yaml@token:token(), yum@yaml@lexer@context:context()).
explicit_mapping_entry_parser() ->
nibble:do(
nibble:token(question_mark),
fun(_) ->
nibble:do(
nibble:span(),
fun(Marker_span) -> _pipe = implicit_mapping_entry_parser(),
nibble:'or'(
_pipe,
{null_at(yum@yaml@parser@span:from_lexer(Marker_span)),
null_at(
yum@yaml@parser@span:from_lexer(Marker_span)
)}
) end
)
end
).
-file("src/yum/yaml/parser/flow_collection.gleam", 116).
?DOC(false).
-spec mapping_entry_parser() -> nibble:parser({yum@yaml@node:node_(),
yum@yaml@node:node_()}, yum@yaml@token:token(), yum@yaml@lexer@context:context()).
mapping_entry_parser() ->
nibble:one_of(
[explicit_mapping_entry_parser(), implicit_mapping_entry_parser()]
).
-file("src/yum/yaml/parser/flow_collection.gleam", 36).
?DOC(false).
-spec mapping_parser() -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
mapping_parser() ->
nibble:do(
nibble:token(open_mapping),
fun(_) ->
nibble:do(
nibble:span(),
fun(Start) ->
nibble:do(
comma_separated(mapping_entry_parser()),
fun(Entries) ->
nibble:do(
nibble:optional(nibble:token(comma)),
fun(_) ->
nibble:do(
nibble:token(close_mapping),
fun(_) ->
nibble:do(
nibble:span(),
fun(End) ->
_pipe = {mapping, Entries},
_pipe@1 = yum@yaml@node:new(
_pipe,
yum@yaml@parser@span:between(
Start,
End
),
flow_mapping
),
nibble:return(_pipe@1)
end
)
end
)
end
)
end
)
end
)
end
).
-file("src/yum/yaml/parser/flow_collection.gleam", 14).
?DOC(false).
-spec parser() -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
parser() ->
nibble:lazy(
fun() -> nibble:one_of([sequence_parser(), mapping_parser()]) end
).