-module(yum@yaml@parser).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/yum/yaml/parser.gleam").
-export([parse_document_stream/1, parse_stream/1, parse/1, parse_document/1]).
-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.gleam", 157).
?DOC(false).
-spec indentation_parser() -> nibble:parser(nil, yum@yaml@token:token(), yum@yaml@lexer@context:context()).
indentation_parser() ->
nibble:do(
yum@yaml@parser@indentation:value_parser(),
fun(_) -> nibble:return(nil) end
).
-file("src/yum/yaml/parser.gleam", 151).
?DOC(false).
-spec document_end_parser() -> nibble:parser(nil, yum@yaml@token:token(), yum@yaml@lexer@context:context()).
document_end_parser() ->
nibble:do(nibble:token(document_end), fun(_) -> nibble:return(nil) end).
-file("src/yum/yaml/parser.gleam", 144).
?DOC(false).
-spec stream_gap_token_parser() -> nibble:parser(nil, yum@yaml@token:token(), yum@yaml@lexer@context:context()).
stream_gap_token_parser() ->
nibble:one_of([document_end_parser(), indentation_parser()]).
-file("src/yum/yaml/parser.gleam", 132).
?DOC(false).
-spec stream_gap_parser() -> nibble:parser(nil, yum@yaml@token:token(), yum@yaml@lexer@context:context()).
stream_gap_parser() ->
nibble:do(
nibble:many(stream_gap_token_parser()),
fun(_) -> nibble:return(nil) end
).
-file("src/yum/yaml/parser.gleam", 138).
?DOC(false).
-spec indentation_gap_parser() -> nibble:parser(nil, yum@yaml@token:token(), yum@yaml@lexer@context:context()).
indentation_gap_parser() ->
nibble:do(
nibble:many(indentation_parser()),
fun(_) -> nibble:return(nil) end
).
-file("src/yum/yaml/parser.gleam", 183).
?DOC(false).
-spec bare_node_parser() -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
bare_node_parser() ->
nibble:one_of(
[yum@yaml@parser@block_collection:parser(),
yum@yaml@parser@block_scalar:parser(),
yum@yaml@parser@flow_collection:parser(),
yum@yaml@parser@double_quoted:parser(),
yum@yaml@parser@single_quoted:parser(),
yum@yaml@parser@scalar:parser()]
).
-file("src/yum/yaml/parser.gleam", 179).
?DOC(false).
-spec default_parser() -> nibble:parser(yum@yaml@node:node_(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
default_parser() ->
yum@yaml@parser@node_property:parser(bare_node_parser()).
-file("src/yum/yaml/parser.gleam", 125).
?DOC(false).
-spec bare_document_parser() -> nibble:parser(yum@yaml@document:document(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
bare_document_parser() ->
nibble:do(
default_parser(),
fun(Root) -> _pipe = yum@yaml@document:new(Root, []),
nibble:return(_pipe) end
).
-file("src/yum/yaml/parser.gleam", 194).
?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.gleam", 163).
?DOC(false).
-spec directive_parser() -> nibble:parser(yum@yaml@document:directive(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
directive_parser() ->
nibble:do(
nibble:take_map(<<"Expected a directive"/utf8>>, fun(Tok) -> case Tok of
{directive, Name, Parameters} ->
{some, {Name, Parameters}};
_ ->
none
end end),
fun(Directive) ->
nibble:do(
nibble:span(),
fun(Token_span) ->
{Name@1, Parameters@1} = Directive,
_pipe = {directive,
Name@1,
Parameters@1,
yum@yaml@parser@span:from_lexer(Token_span)},
nibble:return(_pipe)
end
)
end
).
-file("src/yum/yaml/parser.gleam", 118).
?DOC(false).
-spec directive_line_parser() -> nibble:parser(yum@yaml@document:directive(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
directive_line_parser() ->
nibble:do(
directive_parser(),
fun(Directive) ->
nibble:do(
indentation_gap_parser(),
fun(_) -> nibble:return(Directive) end
)
end
).
-file("src/yum/yaml/parser.gleam", 103).
?DOC(false).
-spec explicit_document_parser() -> nibble:parser(yum@yaml@document:document(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
explicit_document_parser() ->
nibble:do(
nibble:many(directive_line_parser()),
fun(Directives) ->
nibble:do(
indentation_gap_parser(),
fun(_) ->
nibble:do(
nibble:token(document_start),
fun(_) ->
nibble:do(
nibble:span(),
fun(Document_start_span) ->
nibble:do(
indentation_gap_parser(),
fun(_) ->
nibble:do(
begin
_pipe = default_parser(),
nibble:'or'(
_pipe,
null_at(
yum@yaml@parser@span:from_lexer(
Document_start_span
)
)
)
end,
fun(Root) ->
_pipe@1 = yum@yaml@document:new(
Root,
Directives
),
nibble:return(_pipe@1)
end
)
end
)
end
)
end
)
end
)
end
).
-file("src/yum/yaml/parser.gleam", 96).
?DOC(false).
-spec document_parser() -> nibble:parser(yum@yaml@document:document(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
document_parser() ->
nibble:one_of([explicit_document_parser(), bare_document_parser()]).
-file("src/yum/yaml/parser.gleam", 87).
?DOC(false).
-spec suffixed_stream_document_parser() -> nibble:parser(yum@yaml@document:document(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
suffixed_stream_document_parser() ->
nibble:do(
document_end_parser(),
fun(_) ->
nibble:do(
indentation_gap_parser(),
fun(_) ->
nibble:do(
document_parser(),
fun(Document) ->
nibble:do(
indentation_gap_parser(),
fun(_) -> nibble:return(Document) end
)
end
)
end
)
end
).
-file("src/yum/yaml/parser.gleam", 80).
?DOC(false).
-spec explicit_stream_document_parser() -> nibble:parser(yum@yaml@document:document(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
explicit_stream_document_parser() ->
nibble:do(
explicit_document_parser(),
fun(Document) ->
nibble:do(
indentation_gap_parser(),
fun(_) -> nibble:return(Document) end
)
end
).
-file("src/yum/yaml/parser.gleam", 73).
?DOC(false).
-spec stream_document_parser() -> nibble:parser(yum@yaml@document:document(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
stream_document_parser() ->
nibble:one_of(
[explicit_stream_document_parser(),
nibble:backtrackable(suffixed_stream_document_parser())]
).
-file("src/yum/yaml/parser.gleam", 59).
?DOC(false).
-spec stream_parser() -> nibble:parser(list(yum@yaml@document:document()), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
stream_parser() ->
nibble:do(
stream_gap_parser(),
fun(_) ->
nibble:do(
nibble:optional(document_parser()),
fun(First) ->
nibble:do(
indentation_gap_parser(),
fun(_) ->
nibble:do(
nibble:many(stream_document_parser()),
fun(Rest) ->
nibble:do(
stream_gap_parser(),
fun(_) ->
nibble:do(
nibble:eof(),
fun(_) -> case First of
{some, Document} ->
nibble:return(
[Document |
Rest]
);
none ->
nibble:return(Rest)
end end
)
end
)
end
)
end
)
end
)
end
).
-file("src/yum/yaml/parser.gleam", 51).
?DOC(false).
-spec parse_document_stream(list(nibble@lexer:token(yum@yaml@token:token()))) -> {ok,
list(yum@yaml@document:document())} |
{error, yum@yaml@error:yaml_error()}.
parse_document_stream(Tokens) ->
_pipe = Tokens,
_pipe@1 = nibble:run(_pipe, stream_parser()),
gleam@result:map_error(_pipe@1, fun yum@yaml@error:from_parse_errors/1).
-file("src/yum/yaml/parser.gleam", 43).
?DOC(false).
-spec parse_stream(list(nibble@lexer:token(yum@yaml@token:token()))) -> {ok,
list(yum@yaml@node:node_())} |
{error, yum@yaml@error:yaml_error()}.
parse_stream(Tokens) ->
_pipe = Tokens,
_pipe@1 = parse_document_stream(_pipe),
gleam@result:map(
_pipe@1,
fun(_capture) ->
gleam@list:map(_capture, fun yum@yaml@document:root/1)
end
).
-file("src/yum/yaml/parser.gleam", 21).
?DOC(false).
-spec parse(list(nibble@lexer:token(yum@yaml@token:token()))) -> {ok,
yum@yaml@node:node_()} |
{error, yum@yaml@error:yaml_error()}.
parse(Tokens) ->
gleam@result:'try'(parse_stream(Tokens), fun(Documents) -> case Documents of
[Document] ->
{ok, Document};
[_, _ | _] ->
{error, yum@yaml@error:multiple_documents()};
[] ->
{error, yum@yaml@error:unexpected_end_of_input()}
end end).
-file("src/yum/yaml/parser.gleam", 31).
?DOC(false).
-spec parse_document(list(nibble@lexer:token(yum@yaml@token:token()))) -> {ok,
yum@yaml@document:document()} |
{error, yum@yaml@error:yaml_error()}.
parse_document(Tokens) ->
gleam@result:'try'(
parse_document_stream(Tokens),
fun(Documents) -> case Documents of
[Document] ->
{ok, Document};
[_, _ | _] ->
{error, yum@yaml@error:multiple_documents()};
[] ->
{error, yum@yaml@error:unexpected_end_of_input()}
end end
).