-module(tomlet@key).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/tomlet/key.gleam").
-export([to_strings/1, starts_with/2, conflicts/2, is_bare_key/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/tomlet/key.gleam", 7).
?DOC(false).
-spec to_strings(tomlet@ast:key()) -> list(binary()).
to_strings(Key) ->
{key, Segments} = Key,
gleam@list:map(Segments, fun(Segment) -> case Segment of
{bare_key_segment, Text} ->
Text;
{quoted_key_segment, Value, _} ->
Value
end end).
-file("src/tomlet/key.gleam", 17).
?DOC(false).
-spec starts_with(list(binary()), list(binary())) -> boolean().
starts_with(Path, Prefix) ->
case {Path, Prefix} of
{_, []} ->
true;
{[Value | Rest_values], [Prefix_value | Rest_prefix]} ->
(Value =:= Prefix_value) andalso starts_with(
Rest_values,
Rest_prefix
);
{_, _} ->
false
end.
-file("src/tomlet/key.gleam", 26).
?DOC(false).
-spec conflicts(list(binary()), list(binary())) -> boolean().
conflicts(Existing, Target) ->
starts_with(Target, Existing) orelse starts_with(Existing, Target).
-file("src/tomlet/key.gleam", 35).
?DOC(false).
-spec is_bare_key_codepoint(integer()) -> boolean().
is_bare_key_codepoint(Codepoint) ->
(((((Codepoint >= 65) andalso (Codepoint =< 90)) orelse ((Codepoint >= 97)
andalso (Codepoint =< 122)))
orelse ((Codepoint >= 48) andalso (Codepoint =< 57)))
orelse (Codepoint =:= 45))
orelse (Codepoint =:= 95).
-file("src/tomlet/key.gleam", 43).
?DOC(false).
-spec all_bare_key_codepoints(list(integer())) -> boolean().
all_bare_key_codepoints(Codepoints) ->
case Codepoints of
[] ->
true;
[Codepoint | Rest] ->
is_bare_key_codepoint(gleam_stdlib:identity(Codepoint)) andalso all_bare_key_codepoints(
Rest
)
end.
-file("src/tomlet/key.gleam", 30).
?DOC(false).
-spec is_bare_key(binary()) -> boolean().
is_bare_key(Segment) ->
(string:length(Segment) > 0) andalso all_bare_key_codepoints(
gleam@string:to_utf_codepoints(Segment)
).