From c2a9c49fbd1c62a35b869831a48da916b1c88a40 Mon Sep 17 00:00:00 2001 From: Joris Gutjahr Date: Fri, 19 Mar 2021 17:51:07 +0100 Subject: [PATCH 1/5] Added none value of QueryParameter. --- src/Url/Builder.elm | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Url/Builder.elm b/src/Url/Builder.elm index edd8b70..8248605 100644 --- a/src/Url/Builder.elm +++ b/src/Url/Builder.elm @@ -193,6 +193,14 @@ int : String -> Int -> QueryParameter int key value = QueryParameter (Url.percentEncode key) (String.fromInt value) +{-| Equivalent to Html.none, this does nothing. Adds nothing to a query + + absolute ["products"] [ string "search" "hat", none] + == absolute ["products"] [ string "search" "hat"] + +-} +none : QueryParameter +none = QueryParameter "" "" {-| Convert a list of query parameters to a percent-encoded query. This function is used by `absolute`, `relative`, etc. @@ -211,12 +219,13 @@ function is used by `absolute`, `relative`, etc. -} toQuery : List QueryParameter -> String toQuery parameters = - case parameters of + let parameters_ = List.filter ((/=) none) parameters + in case parameters_ of [] -> "" _ -> - "?" ++ String.join "&" (List.map toQueryPair parameters) + "?" ++ String.join "&" (List.map toQueryPair parameters_) toQueryPair : QueryParameter -> String From 1055afc3c4ff618c3f67105631d518f59c6c10b2 Mon Sep 17 00:00:00 2001 From: Joris Gutjahr Date: Fri, 19 Mar 2021 17:52:26 +0100 Subject: [PATCH 2/5] Added Documentation for none --- src/Url/Builder.elm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Url/Builder.elm b/src/Url/Builder.elm index 8248605..66d7682 100644 --- a/src/Url/Builder.elm +++ b/src/Url/Builder.elm @@ -21,7 +21,7 @@ This module helps you create these! @docs absolute, relative, crossOrigin, custom, Root # Queries -@docs QueryParameter, string, int, toQuery +@docs QueryParameter, string, int, none, toQuery -} @@ -193,7 +193,9 @@ int : String -> Int -> QueryParameter int key value = QueryParameter (Url.percentEncode key) (String.fromInt value) -{-| Equivalent to Html.none, this does nothing. Adds nothing to a query +{-| Equivalent to Html.none, this does nothing. +Adds nothing to a query. +This is useful for the generation of dynamic urls. absolute ["products"] [ string "search" "hat", none] == absolute ["products"] [ string "search" "hat"] From 856bf6d4d885db2637ffb66d8ee7f67be28ff5f4 Mon Sep 17 00:00:00 2001 From: Joris Gutjahr Date: Fri, 19 Mar 2021 17:53:00 +0100 Subject: [PATCH 3/5] Exposed the none value --- src/Url/Builder.elm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Url/Builder.elm b/src/Url/Builder.elm index 66d7682..b91a682 100644 --- a/src/Url/Builder.elm +++ b/src/Url/Builder.elm @@ -1,6 +1,6 @@ module Url.Builder exposing ( absolute, relative, crossOrigin, custom, Root(..) - , QueryParameter, string, int, toQuery + , QueryParameter, string, int, none, toQuery ) From a6a3dcf2769915605a4949f0da7a4c8adcfc2b4e Mon Sep 17 00:00:00 2001 From: Joris Gutjahr Date: Fri, 19 Mar 2021 18:10:38 +0100 Subject: [PATCH 4/5] none value is not filtered out, but instead result in an empty string, if passed to toQueryPair --- src/Url/Builder.elm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Url/Builder.elm b/src/Url/Builder.elm index b91a682..f3532ab 100644 --- a/src/Url/Builder.elm +++ b/src/Url/Builder.elm @@ -221,8 +221,7 @@ function is used by `absolute`, `relative`, etc. -} toQuery : List QueryParameter -> String toQuery parameters = - let parameters_ = List.filter ((/=) none) parameters - in case parameters_ of + case parameters_ of [] -> "" @@ -232,4 +231,6 @@ toQuery parameters = toQueryPair : QueryParameter -> String toQueryPair (QueryParameter key value) = - key ++ "=" ++ value + if QueryParameter key value == none + then "" + else key ++ "=" ++ value From 32b662e1438494e48cf206ccfcaa6cae2e7fb445 Mon Sep 17 00:00:00 2001 From: Joris Gutjahr Date: Fri, 19 Mar 2021 18:12:24 +0100 Subject: [PATCH 5/5] Naming error fixed. It compiles now. --- src/Url/Builder.elm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Url/Builder.elm b/src/Url/Builder.elm index f3532ab..7ea7aac 100644 --- a/src/Url/Builder.elm +++ b/src/Url/Builder.elm @@ -221,12 +221,12 @@ function is used by `absolute`, `relative`, etc. -} toQuery : List QueryParameter -> String toQuery parameters = - case parameters_ of + case parameters of [] -> "" _ -> - "?" ++ String.join "&" (List.map toQueryPair parameters_) + "?" ++ String.join "&" (List.map toQueryPair parameters) toQueryPair : QueryParameter -> String