-module(molt@types).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/molt/types.gleam").
-export_type([path_segment/0, toml_version/0, index_entry/0, span/0, syntax_error_kind/0, syntax_error/0, document/0, toml_kind/0, index_key/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(" Shared types for molt, molt/cst, molt/ops, and molt/value.\n").
-type path_segment() :: {key_segment, binary()} | {index_segment, integer()}.
-opaque toml_version() :: {toml_version, binary()}.
-type index_entry() :: {index_table, list(binary())} |
{index_array_of_tables, integer(), list(binary())} |
{index_array_of_tables_entry,
list(path_segment()),
integer(),
list(binary())} |
{index_implicit_table, list(binary())} |
{index_scalar_value, list(path_segment())} |
{index_inline_table_value, list(path_segment())} |
{index_array_value, list(path_segment())}.
-type span() :: {span, integer(), integer(), integer()}.
-type syntax_error_kind() :: {duplicate_key, binary(), span()} |
{duplicate_table, span()} |
{key_is_scalar, binary(), span()} |
{key_is_inline_table, binary(), span()} |
{key_is_array, binary(), span()} |
invalid_key_syntax |
missing_value |
extra_equals |
multiple_values |
empty_table_header |
malformed_table_header |
unterminated_array |
misplaced_array_separator |
unterminated_inline_table |
{duplicate_key_in_inline_table, binary()} |
invalid_bare_value_in_inline_table |
misplaced_inline_table_separator |
unterminated_string |
unterminated_multiline_string |
{bad_value, binary()} |
unparsable_content |
no_valid_toml_structure.
-type syntax_error() :: {syntax_error,
syntax_error_kind(),
list(binary()),
span()}.
-type document() :: {document,
toml_version(),
integer(),
greenwood:node_(toml_kind()),
gleam@option:option(gleam@dict:dict(index_key(), index_entry()))}.
-type toml_kind() :: root |
table |
array_of_tables |
key_value |
key |
array |
inline_table |
array_element |
error |
post_script |
bom |
bare_key |
invalid_value |
invalid_basic_string |
invalid_literal_string |
invalid_multiline_basic_string |
invalid_multiline_literal_string |
basic_string |
multiline_basic_string |
multiline_basic_string_nl |
literal_string |
multiline_literal_string |
multiline_literal_string_nl |
integer |
binary_integer |
hex_integer |
octal_integer |
float |
bool_true |
bool_false |
inf |
pos_inf |
neg_inf |
na_n |
pos_na_n |
neg_na_n |
offset_date_time |
local_date_time |
local_date |
local_time |
equals |
dot |
comma |
left_bracket |
right_bracket |
left_brace |
right_brace |
comment |
whitespace |
newline.
-type index_key() :: {index_key, list(path_segment())}.