Bogdanp/elm-querystring/1.0.0

NOTE: this package is not compatible with Elm 0.19.1

QueryString

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" : String

And 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")

Types

Represents a parsed query string.

Constructing QueryStrings

parse : String -> QueryString

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"])])
    : QueryString
empty : QueryString

Construct an empty QueryString.

Manipulating parameters

render : QueryString -> String

Render a QueryString to a String.

> render (parse "?a=1&b=a&a=c")
"?a=1&a=c&b=a" : String
add : String -> String -> QueryString -> QueryString

Add 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" : String
remove : String -> QueryString -> QueryString

Remove 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" : String
filter : String -> (String -> Bool) -> QueryString -> QueryString

Filter a key's values.

> parse "?a=1&b=a&a=c"
|   |> filter "a" ((==) "1")
|   |> render
"?a=1&b=a" : String

Extracting parameters

all : String -> QueryString -> List String

Retrieve 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 String
one : Parser () a -> String -> QueryString -> Maybe a

Retrieve 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 Int
many : Parser () a -> String -> QueryString -> List a

Retrieve 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 Int

Parsers

string : Parser s String

A Parser that accepts any string.

int : Parser s Int

A Parser that accepts any integer.