Skip to main content

src/yum@yaml@parser@indentation.erl

-module(yum@yaml@parser@indentation).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/yum/yaml/parser/indentation.gleam").
-export([value_parser/0, same_amount_parser/1, greater_than_parser/1, block_separator_parser/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/indentation.gleam", 7).
?DOC(false).
-spec value_parser() -> nibble:parser(integer(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
value_parser() ->
    nibble:take_map(<<"Expected an indentation"/utf8>>, fun(Tok) -> case Tok of
                {indentation, Indent} ->
                    {some, Indent};

                _ ->
                    none
            end end).

-file("src/yum/yaml/parser/indentation.gleam", 16).
?DOC(false).
-spec same_amount_parser(integer()) -> nibble:parser(nil, yum@yaml@token:token(), yum@yaml@lexer@context:context()).
same_amount_parser(Indent) ->
    nibble:token({indentation, Indent}).

-file("src/yum/yaml/parser/indentation.gleam", 21).
?DOC(false).
-spec greater_than_parser(integer()) -> nibble:parser(integer(), yum@yaml@token:token(), yum@yaml@lexer@context:context()).
greater_than_parser(Parent_indent) ->
    nibble:do(
        value_parser(),
        fun(Indent) ->
            nibble:do(
                nibble:guard(
                    Indent > Parent_indent,
                    <<"Expected a deeper indentation"/utf8>>
                ),
                fun(_use0) ->
                    nil = _use0,
                    nibble:return(Indent)
                end
            )
        end
    ).

-file("src/yum/yaml/parser/indentation.gleam", 31).
?DOC(false).
-spec block_separator_parser(integer()) -> nibble:parser(nil, yum@yaml@token:token(), yum@yaml@lexer@context:context()).
block_separator_parser(Indent) ->
    _pipe = same_amount_parser(Indent),
    nibble:backtrackable(_pipe).