README.md in ruby-short_url-0.2.0 vs README.md in ruby-short_url-0.3.0

- old
+ new

@@ -1,22 +1,22 @@ # Ruby::ShortUrl [![Build Status](https://travis-ci.org/toshimaru/ruby-short_url.svg?branch=master)](https://travis-ci.org/toshimaru/ruby-short_url) [![Gem Version](https://badge.fury.io/rb/ruby-short_url.svg)](http://badge.fury.io/rb/ruby-short_url) -[![Dependency Status](https://gemnasium.com/toshimaru/ruby-short_url.svg)](https://gemnasium.com/toshimaru/ruby-short_url) [![Test Coverage](https://codeclimate.com/github/toshimaru/ruby-short_url/badges/coverage.svg)](https://codeclimate.com/github/toshimaru/ruby-short_url/coverage) [![Code Climate](https://codeclimate.com/github/toshimaru/ruby-short_url/badges/gpa.svg)](https://codeclimate.com/github/toshimaru/ruby-short_url) +[![Dependency Status](https://gemnasium.com/toshimaru/ruby-short_url.svg)](https://gemnasium.com/toshimaru/ruby-short_url) Ruby implementation for generating Tiny URL. Ruby implementation of [python-short_url](https://github.com/Alir3z4/python-short_url) > A bit-shuffling approach is used to avoid generating consecutive, predictable URLs. However, the algorithm is deterministic and will guarantee that no collisions will occur. More detail is [here](https://github.com/Alir3z4/python-short_url#short-url-generator). ## Installation -Add this line to your application's Gemfile: +Add this line to your application's `Gemfile`: ```ruby gem 'ruby-short_url' ``` @@ -36,10 +36,36 @@ # decode encoded Ruby::ShortUrl::Encoder.new.decode_url("00crI") # => 123456 ``` -TODO: Customize alphabet/block_size/min_size. +### Create your own short URL + +```rb +class CustomEncoder < Ruby::ShortUrl::Encoder + def initialize + # Set your own custom alphabet and block_size + super(alphabet: "0123abc", block_size: 5) + end +end + +# > custom_encoder = CustomEncoder.new +# => #<CustomEncoder:0x007faf3babc830 @alphabet="0123abc", @block_size=5, @mask=31, @mapping=[0, 1, 2, 3, 4]> +# +# > custom_encoder.encode_url(1) +# => "00022" +# > custom_encoder.encode_url(2) +# => "00011" +# > custom_encoder.encode_url(3) +# => "00033" +# +# > custom_encoder.decode_url("00022") +# => 1 +# > custom_encoder.decode_url("00011") +# => 2 +# > custom_encoder.decode_url("00033") +# => 3 +``` ## Development After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.