uri
A URI library for Clojure, wrapping the java.net.URI class.
Create a URI with:
=> (make "http://clojure.org/")
#<URI http://clojure.org/>
You can also create URIs by passing in specific attributes.
=> (make "http" "clojure.github.com" "/clojure/clojure.core.api.html"
"clojure.core/defmulti")
#<URI http://clojure.github.com/clojure/clojure.core.api.html#clojure.core/defmulti>
You can get individual attributes from URIs:
=> (scheme (make "http://clojure.org/"))
"http"
=> (host (make "http://clojure.org/"))
"clojure.org"
If a URI does not contain a particular attribute, they return nil. Note that this is different from the java library, which returns -1 for a missing port.
You can determine whether a URI is absolute with absolute?
or opaque with
opaque?
:
=> (absolute? (make "http://clojure.org/"))
true
=> (absolute? (make "clojure/clojure.core.api.html"))
false
=> (opaque? (make "mailto:java-net@java.sun.com"))
true
=> (opaque? (make "http://clojure.org/"))
false
You can normalize
a URI:
=> (normalize (make "docs/../clojure.core.api.html"))
#<URI clojure.core.api.html>
You can resolve
or relativize
a URI (see the javadoc):
=> (resolve (make "http://clojure.org/") (make "docs/clojure.core.api.html"))
#<URI http://clojure.org/docs/clojure.core.api.html>
=> (relativize (make "http://clojure.org/")
(make "http://clojure.org/docs/clojure.core.api.html"))
#<URI docs/clojure.core.api.html>
You can create a URL from a URI:
=> (url (make "http://clojure.org/"))
#<URL http://clojure.org/>
You can swap between URIs and clojure maps:
=> (uri->map (make "foo://bar@baz:8000/foo?bar=baz#frag"))
{:fragment "frag", :query "bar=baz", :path "/foo", :port 8000, :host "baz",
:user-info "bar", :scheme "foo"}
=> (map->uri {:fragment "frag", :query "bar=baz", :path "/foo", :port 8000,
:host "baz", :user-info "bar", :scheme "foo"})
#<URI foo://bar@baz:8000/foo?bar=baz#frag>
v1.1.0
Bumped clojure version from 1.2.0 to 1.2.1.
Changed the constructor name from uri
to make
.
Added uri->map
and map->uri
to ease creating and dissecting uris.
DerGuteMoritz
Copyright (C) 2011 Chris O'Donnell
Distributed under the Eclipse Public License, the same as Clojure.
Can you improve this documentation? These fine people already did:
Christopher O'Donnell & Chris O'DonnellEdit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close