public
Description: Addressable is a replacement for the URI implementation that is part of Ruby's standard library. It more closely conforms to the relevant RFCs and adds support for IRIs and URI templates.
Homepage: http://addressable.rubyforge.org/
Clone URL: git://github.com/sporkmonger/addressable.git
sporkmonger (author)
Sat Oct 31 18:42:00 -0700 2009
commit  de80951378af58004772ce7efd6fd62d9d74d248
tree    4a921cc68adf8ab4914d45a4bb566769af708388
parent  aed9969c6405c81ab2bfe5b64819ab0f3c38e5f0
name age message
file .gitignore Loading commit data...
file CHANGELOG Mon Oct 12 16:53:49 -0700 2009 Updated CHANGELOG. [sporkmonger]
file LICENSE Thu Jun 05 11:29:57 -0700 2008 Updated copyright date. git-svn-id: svn+ssh://... [sporkmonger]
file README
file Rakefile Sat Oct 31 18:27:09 -0700 2009 no need to manage the LOAD_PATH, really [mislav]
file addressable.gemspec Sat Oct 31 18:26:29 -0700 2009 gemspec for v2.1.1 [mislav]
directory lib/
directory spec/
directory tasks/
directory website/
README
Addressable is a replacement for the URI implementation that is part of
Ruby's standard library. It more closely conforms to the relevant RFCs and
adds support for IRIs and URI templates.  Additionally, it provides extensive
support for URI templates.

Example usage:
 
  require "addressable/uri"

  uri = Addressable::URI.parse("http://example.com/path/to/resource/")
  uri.scheme
  #=> "http"
  uri.host
  #=> "example.com"
  uri.path
  #=> "/path/to/resource/"

  uri = Addressable::URI.parse("http://www.詹姆斯.com/")
  uri.normalize
  #=> #<Addressable::URI:0xc9a4c8 URI:http://www.xn--8ws00zhy3a.com/>

  require "addressable/template"

  template = Addressable::Template.new("http://example.com/{-list|+|query}/")
  template.expand({
    "query" => "an example query".split(" ")
  })
  #=> #<Addressable::URI:0xc9d95c URI:http://example.com/an+example+query/>

  template = Addressable::Template.new(
    "http://example.com/{-join|&|one,two,three}/"
  )
  template.partial_expand({"one" => "1", "three" => 3}).pattern
  #=> "http://example.com/?one=1{-prefix|&two=|two}&three=3"

  template = Addressable::Template.new(
    "http://{host}/{-suffix|/|segments}?{-join|&|one,two,bogus}\#{fragment}"
  )
  uri = Addressable::URI.parse(
    "http://example.com/a/b/c/?one=1&two=2#foo"
  )
  template.extract(uri)
  #=>
  # {
  #   "host" => "example.com",
  #   "segments" => ["a", "b", "c"],
  #   "one" => "1",
  #   "two" => "2",
  #   "fragment" => "foo"
  # }