diff options
-rw-r--r-- | src/gleam/uri.gleam | 9 | ||||
-rw-r--r-- | test/gleam/uri_test.gleam | 4 |
2 files changed, 6 insertions, 7 deletions
diff --git a/src/gleam/uri.gleam b/src/gleam/uri.gleam index 882f17e..8e49c5b 100644 --- a/src/gleam/uri.gleam +++ b/src/gleam/uri.gleam @@ -15,7 +15,7 @@ if erlang { import gleam/list import gleam/result import gleam/dynamic.{Dynamic} - import gleam/map.{Map} + import gleam/map import gleam/function import gleam/pair } @@ -221,9 +221,6 @@ if erlang { pub fn path_segments(path: String) -> List(String) { remove_dot_segments(string.split(path, "/")) } - - external fn erl_to_string(Map(UriKey, Dynamic)) -> Dynamic = - "uri_string" "recompose" } /// Encodes a `Uri` value as a URI string. @@ -240,12 +237,10 @@ if erlang { /// ``` /// pub fn to_string(uri: Uri) -> String { - // TODO: query - // TODO: fragment let parts = [] let parts = [uri.path, ..parts] let parts = case uri.host, string.starts_with(uri.path, "/") { - Some(_), False -> ["/", ..parts] + Some(host), False if host != "" -> ["/", ..parts] _, _ -> parts } let parts = case uri.host, uri.port { diff --git a/test/gleam/uri_test.gleam b/test/gleam/uri_test.gleam index 45fe73e..46ac2a5 100644 --- a/test/gleam/uri_test.gleam +++ b/test/gleam/uri_test.gleam @@ -114,6 +114,10 @@ pub fn host_to_string_test() { uri.Uri(None, None, Some("example.com"), None, "noslash", None, None) |> uri.to_string |> should.equal("//example.com/noslash") + + uri.Uri(None, None, Some(""), None, "", None, None) + |> uri.to_string + |> should.equal("//") } pub fn port_to_string_test() { |