Skip to main content

src/yum@yaml@lexer.erl

-module(yum@yaml@lexer).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/yum/yaml/lexer.gleam").
-export([lex/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/lexer.gleam", 25).
?DOC(false).
-spec lexer() -> nibble@lexer:lexer(yum@yaml@token:token(), yum@yaml@lexer@context:context()).
lexer() ->
    nibble@lexer:advanced(fun(Ctx) -> case Ctx of
                {block_style, _} ->
                    [yum@yaml@lexer@comment:lexer(),
                        yum@yaml@lexer@directive:lexer(),
                        yum@yaml@lexer@document_marker:lexer(),
                        yum@yaml@lexer@indentation:lexer()];

                {flow_style, _} ->
                    [yum@yaml@lexer@comment:lexer(),
                        yum@yaml@lexer@directive:lexer(),
                        yum@yaml@lexer@document_marker:lexer(),
                        yum@yaml@lexer@indentation:lexer(),
                        yum@yaml@lexer@plain_scalar:lexer()];

                {flow_mapping, _} ->
                    [yum@yaml@lexer@comment:lexer(),
                        yum@yaml@lexer@flow_mapping:lexer()];

                {flow_sequence, _} ->
                    [yum@yaml@lexer@comment:lexer(),
                        yum@yaml@lexer@flow_sequence:lexer()];

                {block_scalar, _, _} ->
                    [yum@yaml@lexer@block_scalar:lexer()];

                {double_quoted_scalar, _} ->
                    [yum@yaml@lexer@double_quoted_scalar:lexer()];

                {single_quoted_scalar, _} ->
                    [yum@yaml@lexer@single_quoted_scalar:lexer()];

                {double_quoted_escape, _} ->
                    [yum@yaml@lexer@double_quoted_scalar:escape_lexer()]
            end end).

-file("src/yum/yaml/lexer.gleam", 17).
?DOC(false).
-spec lex(binary()) -> {ok, list(nibble@lexer:token(yum@yaml@token:token()))} |
    {error, yum@yaml@error:yaml_error()}.
lex(Input) ->
    Initial_context = {flow_style, {block_style, 0}},
    _pipe = Input,
    _pipe@1 = nibble@lexer:run_advanced(_pipe, Initial_context, lexer()),
    gleam@result:map_error(_pipe@1, fun yum@yaml@error:from_lex_error/1).