Как проанализировать строку запроса в Elm, чтобы создать новую с новым QueryParameter? - PullRequest
0 голосов
/ 21 мая 2019

Я использую elm-http-builder для обработки запросов, и у меня есть пара функций для добавления фильтров к данному запросу.

Эта функция предназначена для добавления новых QueryParameter к существующему URL-адресу запроса .

Пока я делал это так:

withQueryParam : ( String, String ) -> RequestBuilder a -> RequestBuilder a
withQueryParam ( paramKey, paramValue ) builder =
    let
        ( url, params ) =
            case String.split "?" builder.url of
                [ path, qs ] ->
                    ( path
                    , qs
                        |> String.split "&"
                        |> List.filterMap (tupleSplit "=")
                        |> List.map (\( key, value ) -> Url.Builder.string key value)
                    )

                [ path ] ->
                    ( path, [] )

                _ ->
                    ( "", [] )

        queryString =
            params
                |> List.append [ Url.Builder.string paramKey paramValue ]
                |> toQuery
                |> String.replace "%20" "+"
    in
    { builder | url = url ++ queryString }


tupleSplit : String -> String -> Maybe ( String, String )
tupleSplit sep string =
    case String.split sep string of
        [ key, value ] ->
            Just ( key, value )

        _ ->
            Nothing

Но у меня такое ощущение, что я должен использовать Url.Parser.Query для этого.

Однако у меня нет списка параметров, которые я должен анализировать.

Знаете ли вы, как я могу улучшить свой код

...