A URL parsing and construction library for ELM
parse a url string-- Given a url string
url = "http://sam:[email protected]:3000/products/kids?color=red&age=10#toys/1"
Erl.parse url
-- Returns a Erl.Url record:
{
protocol: "http",
username: "sam",
password: "pass",
host: ["api", "example", "com"],
port': 3000,
path: ["products", "kids"],
hash: ["toys", "1"],
query: Dict {
"color": "red",
"age": "10"
}
}See MDN for more details (https://developer.mozilla.org/en-US/docs/Web/API/Location). Note that in MDN query is called search.
new-- Construct an empty Erl.Url record:
url =
Erl.new-- Modify the protocol
{ url | protocol <- "https" }
-- Modify host
{url | host <- ["api", "acme", "com"] }
-- Modify port
{ url | port' <- 9000 }
-- Modify path
{url | path <- ["users", "1"] }
-- Modify hash
{url | hash <- ["!", "user", "1"] }
-- Clear query string
Erl.clearQuery url
-- Add one query string key/value (patches previous query string)
Erl.addQuery "key" "value" url
-- Remove one query string key/value
Erl.removeQuery "key" url
-- Replaces query string with key/value (removes any previous keys)
Erl.setQuery "key" "value" urltoString-- Given a Erl.Url record (url):
Erl.toString url
-- Returns the url as string:
"http://www.foo.com:2000/users/1?k=2&q=1#a/b"Documentation at package.elm-lang.org
elm-package install
npm i
npm test7.0.0 Hash goes after query as per https://url.spec.whatwg.org/6.0.0 setQuery replaces the whole query, Added addQuery and removeQuery5.0.1 setQuery removes the key when passed an empty value5.0.0 Renamed fragment to hash to aling with the MDN documentation better