Context
What I mean by a "dirty" path is simply a path that has trailing and leading slashes, without accounting for what other URL parts are following or leading.
Current behavior
If we try to merge parts of a URL that contains leading and trailing slashes, building a relative path out of these data would lead to an incorrect path.
import Url.Builder
Url.Builder.relative ["http://localhost/", "/ping/"] [] -- "http://localhost///ping/"
Expected behavior
It would be nice if the function somehow cleaned the URLs. The end result (with the above data) could look like that.
import Url.Builder
Url.Builder.relative ["http://localhost/", "/ping/"] [] -- "http://localhost/ping/"
Url.Builder.relative ["http://localhost/", "ping/"] [] -- "http://localhost/ping/"
Url.Builder.relative ["http://localhost/", "/ping"] [] -- "http://localhost/ping"
Url.Builder.relative ["http://localhost/", "ping"] [] -- "http://localhost/ping"
Url.Builder.relative ["http://localhost", "/ping/"] [] -- "http://localhost/ping/"
Url.Builder.relative ["http://localhost", "ping/"] [] -- "http://localhost/ping/"
Url.Builder.relative ["http://localhost", "/ping"] [] -- "http://localhost/ping"
Url.Builder.relative ["http://localhost", "ping"] [] -- "http://localhost/ping"
Additional Context
In JavaScript, there is a module path that has a join function that act in a similar fashion, but will merge the parts of a path and make a valid url at the end (it also uses the operating system's default path separator but this is irrelevant here).
There could be a new Url.Builder.join function to prevent any breaking change in the current API instead.
import {join} from "path";
console.log(join("http://localhost/", "/ping/")); // "http://localhost/ping/"
console.log(join("http://localhost/", "ping/")); // "http://localhost/ping/"
console.log(join("http://localhost/", "/ping")); // "http://localhost/ping"
console.log(join("http://localhost/", "ping")); // "http://localhost/ping"
console.log(join("http://localhost", "/ping/")); // "http://localhost/ping/"
console.log(join("http://localhost", "ping/")); // "http://localhost/ping/"
console.log(join("http://localhost", "/ping")); // "http://localhost/ping"
console.log(join("http://localhost", "ping")); // "http://localhost/ping"
Like
import Url.Builder
Url.Builder.join ["http://localhost/", "/ping/"] [] -- "http://localhost/ping/"
Url.Builder.join ["http://localhost/", "ping/"] [] -- "http://localhost/ping/"
Url.Builder.join ["http://localhost/", "/ping"] [] -- "http://localhost/ping"
Url.Builder.join ["http://localhost/", "ping"] [] -- "http://localhost/ping"
Url.Builder.join ["http://localhost", "/ping/"] [] -- "http://localhost/ping/"
Url.Builder.join ["http://localhost", "ping/"] [] -- "http://localhost/ping/"
Url.Builder.join ["http://localhost", "/ping"] [] -- "http://localhost/ping"
Url.Builder.join ["http://localhost", "ping"] [] -- "http://localhost/ping"
Context
What I mean by a "dirty" path is simply a path that has trailing and leading slashes, without accounting for what other URL parts are following or leading.
Current behavior
If we try to merge parts of a URL that contains leading and trailing slashes, building a relative path out of these data would lead to an incorrect path.
Expected behavior
It would be nice if the function somehow cleaned the URLs. The end result (with the above data) could look like that.
Additional Context
In JavaScript, there is a module
paththat has ajoinfunction that act in a similar fashion, but will merge the parts of a path and make a valid url at the end (it also uses the operating system's default path separator but this is irrelevant here).There could be a new
Url.Builder.joinfunction to prevent any breaking change in the current API instead.Like