Packages

Join URL path segments and normalize the result.

Current section

Files

Jump to
url_join src url_join.erl
Raw

src/url_join.erl

-module(url_join).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/url_join.gleam").
-export([join/1]).
-file("src/url_join.gleam", 12).
-spec normalize(list(binary())) -> binary().
normalize(Segments) ->
case Segments of
[] ->
<<""/utf8>>;
[First | Rest] ->
Merged = url_join@merge:merge_leading_parts(First, Rest),
Processed = url_join@parts:process(Merged),
Joined = url_join@parts:join(Processed),
url_join@query:normalize(Joined)
end.
-file("src/url_join.gleam", 7).
-spec join(list(binary())) -> binary().
join(Parts) ->
Filtered = gleam@list:filter(
Parts,
fun(Part) -> not gleam@string:is_empty(Part) end
),
normalize(Filtered).