-module(taffy@parser@types). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/taffy/parser/types.gleam"). -export([register_anchor/3, resolve_alias/2, enter_depth/1, exit_depth/1, new/1]). -export_type([parser/0, parse_error/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). -type parser() :: {parser, list(taffy@lexer:token()), list(taffy@lexer:token()), integer(), gleam@dict:dict(binary(), taffy@value:yaml_value()), gleam@option:option(integer()), boolean(), integer(), boolean(), list(binary()), integer(), integer(), integer()}. -type parse_error() :: {parse_error, binary(), integer()}. -file("src/taffy/parser/types.gleam", 61). ?DOC(false). -spec register_anchor(parser(), binary(), taffy@value:yaml_value()) -> parser(). register_anchor(Parser, Name, Val) -> {parser, erlang:element(2, Parser), erlang:element(3, Parser), erlang:element(4, Parser), gleam@dict:insert(erlang:element(5, Parser), Name, Val), erlang:element(6, Parser), erlang:element(7, Parser), erlang:element(8, Parser), erlang:element(9, Parser), erlang:element(10, Parser), erlang:element(11, Parser), erlang:element(12, Parser), erlang:element(13, Parser)}. -file("src/taffy/parser/types.gleam", 69). ?DOC(false). -spec resolve_alias(parser(), binary()) -> {ok, {taffy@value:yaml_value(), parser()}} | {error, binary()}. resolve_alias(Parser, Name) -> case gleam_stdlib:map_get(erlang:element(5, Parser), Name) of {error, _} -> {error, <<"unknown"/utf8>>}; {ok, Val} -> Cost = taffy@value:size(Val), Remaining = erlang:element(11, Parser) - Cost, case Remaining < 0 of true -> {error, <<"budget exceeded"/utf8>>}; false -> {ok, {Val, {parser, erlang:element(2, Parser), erlang:element(3, Parser), erlang:element(4, Parser), erlang:element(5, Parser), erlang:element(6, Parser), erlang:element(7, Parser), erlang:element(8, Parser), erlang:element(9, Parser), erlang:element(10, Parser), Remaining, erlang:element(12, Parser), erlang:element(13, Parser)}}} end end. -file("src/taffy/parser/types.gleam", 89). ?DOC(false). -spec enter_depth(parser()) -> {ok, parser()} | {error, nil}. enter_depth(Parser) -> case (erlang:element(12, Parser) + 1) > erlang:element(13, Parser) of true -> {error, nil}; false -> {ok, {parser, erlang:element(2, Parser), erlang:element(3, Parser), erlang:element(4, Parser), erlang:element(5, Parser), erlang:element(6, Parser), erlang:element(7, Parser), erlang:element(8, Parser), erlang:element(9, Parser), erlang:element(10, Parser), erlang:element(11, Parser), erlang:element(12, Parser) + 1, erlang:element(13, Parser)}} end. -file("src/taffy/parser/types.gleam", 96). ?DOC(false). -spec exit_depth(parser()) -> parser(). exit_depth(Parser) -> {parser, erlang:element(2, Parser), erlang:element(3, Parser), erlang:element(4, Parser), erlang:element(5, Parser), erlang:element(6, Parser), erlang:element(7, Parser), erlang:element(8, Parser), erlang:element(9, Parser), erlang:element(10, Parser), erlang:element(11, Parser), erlang:element(12, Parser) - 1, erlang:element(13, Parser)}. -file("src/taffy/parser/types.gleam", 44). ?DOC(false). -spec new(list(taffy@lexer:token())) -> parser(). new(Tokens) -> {parser, Tokens, [], 0, maps:new(), none, false, 0, false, [], 10000000, 0, 1024}.