This module exposes functions for working with query strings.
You can manipulate QueryStrings:
> empty
| |> add "a" "hello"
| |> add "a" "goodbye"
| |> add "b" "1"
| |> render
"?a=hello&a=goodbye&b=1" : StringAnd you can parse and extract their parameters:
> let
| qs = parse "?a=1&a=2&a=test&b=hello"
| a = qs |> many int "a"
| b = qs |> one string "b" |> Maybe.withDefault "goodbye"
| in
| (a, b)
([1, 2], "hello")Turn a String into a QueryString. The initial ? is optional.
> parse ""
QueryString (Dict.fromList []) : QueryString
> parse "?a=1&b=c&a=2"
QueryString (Dict.fromList [("a",["1","2"]),("b",["c"])])
: QueryString
> parse "a=1&b=c&a=2"
QueryString (Dict.fromList [("a",["1","2"]),("b",["c"])])
: QueryStringConstruct an empty QueryString.
Render a QueryString to a String.
> render (parse "?a=1&b=a&a=c")
"?a=1&a=c&b=a" : StringAdd a value to a key.
> parse "?a=1&b=a&a=c"
| |> add "a" "2"
| |> render
"?a=2&a=1&a=c&b=a" : String
> parse "?a=1&b=a&a=c"
| |> add "d" "hello"
| |> render
"?a=1&a=c&b=a&d=hello" : StringRemove a key.
> parse "?a=1&b=a&a=c"
| |> remove "a"
| |> render
"?b=a" : String
> parse "?a=1&b=a&a=c"
| |> remove "c"
| |> render
"?a=1&a=c&b=a" : StringFilter a key's values.
> parse "?a=1&b=a&a=c"
| |> filter "a" ((==) "1")
| |> render
"?a=1&b=a" : StringRetrieve all of the values for a given key.
> parse "?a=1&a=2"
| |> all "a"
["1","2"] : List String
> parse "?a=1&a=2"
| |> all "b"
[] : List StringRetrieve a single value for a given key. Values are funneled through the given parser before being returned.
> parse "?a=1&a=2"
| |> one string "a"
Just "2" : Maybe.Maybe String
> parse "?a=1&a=2"
| |> one int "a"
Just 2 : Maybe.Maybe Int
> parse "?a=1&a=c"
| |> one int "a"
Just 1 : Maybe.Maybe IntRetrieve zero or more values for some key. Values are funneled through the given parser before being returned.
> parse "?a=1&a=c&a=2"
| |> many int "a"
[1,2] : List IntA Parser that accepts any string.
A Parser that accepts any integer.
Represents a parsed query string.