Packages

Join URL path segments and normalize the result.

Current section

Files

Jump to
url_join src url_join.gleam
Raw

src/url_join.gleam

import gleam/list
import gleam/string
import url_join/merge
import url_join/parts
import url_join/query
pub fn join(parts: List(String)) -> String {
let filtered = list.filter(parts, fn(part) { !string.is_empty(part) })
normalize(filtered)
}
fn normalize(segments: List(String)) -> String {
case segments {
[] -> ""
[first, ..rest] -> {
let merged = merge.merge_leading_parts(first, rest)
let processed = parts.process(merged)
let joined = parts.join(processed)
query.normalize(joined)
}
}
}