-module(url_join@slashes). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/url_join/slashes.gleam"). -export([trim_leading/1, trim_trailing/1, collapse_trailing/1]). -file("src/url_join/slashes.gleam", 19). -spec drop_leading_chars(binary(), binary()) -> binary(). drop_leading_chars(S, Char) -> case gleam_stdlib:string_pop_grapheme(S) of {ok, {G, Rest}} -> case G =:= Char of true -> drop_leading_chars(Rest, Char); false -> S end; {error, _} -> <<""/utf8>> end. -file("src/url_join/slashes.gleam", 3). -spec trim_leading(binary()) -> binary(). trim_leading(S) -> drop_leading_chars(S, <<"/"/utf8>>). -file("src/url_join/slashes.gleam", 30). -spec drop_trailing_chars(binary(), binary()) -> binary(). drop_trailing_chars(S, Char) -> case gleam_stdlib:string_pop_grapheme(gleam@string:reverse(S)) of {ok, {G, Rev_rest}} -> case G =:= Char of true -> _pipe = gleam@string:reverse(Rev_rest), drop_trailing_chars(_pipe, Char); false -> S end; {error, _} -> <<""/utf8>> end. -file("src/url_join/slashes.gleam", 7). -spec trim_trailing(binary()) -> binary(). trim_trailing(S) -> drop_trailing_chars(S, <<"/"/utf8>>). -file("src/url_join/slashes.gleam", 11). -spec collapse_trailing(binary()) -> binary(). collapse_trailing(S) -> Trimmed = drop_trailing_chars(S, <<"/"/utf8>>), case {gleam_stdlib:string_ends_with(S, <<"/"/utf8>>), gleam@string:is_empty(Trimmed)} of {true, false} -> <>; {_, _} -> Trimmed end.