<img src=“/logo.svg” width=“64px” height=“64px”/>
The class {Iri
} helps you build a URI and then modify its parts via a simple fluent interface:
require 'iri' url = Iri.new('http://google.com/') .append('find').append('me') # -> http://google.com/find/me .add(q: 'books about OOP', limit: 50) # -> ?q=books+about+OOP&limit=50 .del(:q) # remove this query parameter .del('limit') # remove this one too .over(q: 'books about tennis', limit: 10) # replace these params .scheme('https') # replace 'http' with 'https' .host('localhost') # replace the host name .port('443') # replace the port .fragment('page-4') # replaces the fragment part of the URI, after the '#' .query('a=1&b=2') # replaces the entire query part of the URI .path('/new/path') # replace the path of the URI, leaving the query untouched .cut('/q') # replace everything after the host and port .to_s # convert it to a string
The full list of methods is here.
Install it:
$ gem install iri
Or add this to your Gemfile
:
gem 'iri'
Pay attention, it is not a parser. The only functionality this gem provides is building URIs.
It is very convenient to use inside HAML, for example:
- iri = Iri.new(request.url) %a{href: iri.over(offset: offset + 10)} Next Page %a{href: iri.over(offset: offset - 10)} Previous Page
Of course, it's better to create the iri
object only once per request and re-use it where you need. It's immutable, so you won't have any side-effects.
PS. See how I use it in this Sinatra web app: yegor256/0rsk.
How to contribute¶ ↑
Read these guidelines. Make sure you build is green before you contribute your pull request. You will need to have Ruby 2.3+ and Bundler installed. Then:
$ bundle update $ bundle exec rake
If it's clean and you don't see any error messages, submit your pull request.