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
[](https://travis-ci.org/toshimaru/ruby-short_url)
[](http://badge.fury.io/rb/ruby-short_url)
-[](https://gemnasium.com/toshimaru/ruby-short_url)
[](https://codeclimate.com/github/toshimaru/ruby-short_url/coverage)
[](https://codeclimate.com/github/toshimaru/ruby-short_url)
+[](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.