-module(glipt@internal@path).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/glipt/internal/path.gleam").
-export([basename/1, drop_extension/1, dirname/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/glipt/internal/path.gleam", 4).
?DOC(false).
-spec basename(binary()) -> binary().
basename(Path) ->
case gleam@string:split(Path, <<"/"/utf8>>) of
[] ->
Path;
Parts ->
case gleam@list:last(Parts) of
{ok, Last} ->
Last;
{error, nil} ->
Path
end
end.
-file("src/glipt/internal/path.gleam", 30).
?DOC(false).
-spec drop_extension(binary()) -> binary().
drop_extension(Filename) ->
case gleam_stdlib:string_ends_with(Filename, <<".gleam"/utf8>>) of
true ->
gleam@string:drop_end(Filename, 6);
false ->
Filename
end.
-file("src/glipt/internal/path.gleam", 37).
?DOC(false).
-spec init(list(binary())) -> list(binary()).
init(Items) ->
case Items of
[] ->
[];
[_] ->
[];
[X | Rest] ->
[X | init(Rest)]
end.
-file("src/glipt/internal/path.gleam", 15).
?DOC(false).
-spec dirname(binary()) -> binary().
dirname(Path) ->
case gleam@string:split(Path, <<"/"/utf8>>) of
[] ->
<<"."/utf8>>;
[_] ->
<<"."/utf8>>;
Parts ->
Parent = init(Parts),
case Parent of
[] ->
<<"."/utf8>>;
[<<""/utf8>>] ->
<<"/"/utf8>>;
_ ->
gleam@string:join(Parent, <<"/"/utf8>>)
end
end.