README.md in multi_range-1.3.0 vs README.md in multi_range-1.3.1
- old
+ new
@@ -1,202 +1,219 @@
-# MultiRange
-
-[![Gem Version](https://img.shields.io/gem/v/multi_range.svg?style=flat)](http://rubygems.org/gems/multi_range)
-[![Build Status](https://travis-ci.com/khiav223577/multi_range.svg?branch=master)](https://travis-ci.org/khiav223577/multi_range)
-[![RubyGems](http://img.shields.io/gem/dt/multi_range.svg?style=flat)](http://rubygems.org/gems/multi_range)
-[![Code Climate](https://codeclimate.com/github/khiav223577/multi_range/badges/gpa.svg)](https://codeclimate.com/github/khiav223577/multi_range)
-[![Test Coverage](https://codeclimate.com/github/khiav223577/multi_range/badges/coverage.svg)](https://codeclimate.com/github/khiav223577/multi_range/coverage)
-
-## Supports
-- Ruby 1.8 ~ 2.7
-
-## Installation
-
-```ruby
-gem 'multi_range'
-```
-
-And then execute:
-
- $ bundle
-
-Or install it yourself as:
-
- $ gem install multi_range
-
-## Usage
-
-Allow you to manipulate a group of ranges. Such as merging overlapping ranges, doing ranges union and difference.
-
-### Sample a number
-```rb
-multi_range = MultiRange.new([1..5, 10..12])
-multi_range.sample
-# => equals to [1, 2, 3, 4, 5, 10, 11, 12].sample
-```
-
-### Difference of ranges
-```rb
-multi_range = MultiRange.new([1..10])
-multi_range -= 5..7
-multi_range.ranges
-# => [1...5, 8..10]
-```
-
-```rb
-multi_range = MultiRange.new([1..10, 50..70, 80..100])
-multi_range -= 5..85
-multi_range.ranges
-# => [1...5, 86..100]
-```
-
-```rb
-multi_range = MultiRange.new([1..10, 50..70, 80..100])
-multi_range -= MultiRange.new([5..60, 75..85])
-multi_range.ranges
-# => [1...5, 61..70, 86..100]
-```
-
-### Union ranges
-
-```rb
-multi_range = MultiRange.new([1..5])
-multi_range |= 3..8
-multi_range.ranges
-# => [1..8]
-```
-
-```rb
-multi_range = MultiRange.new([1..5, 10..15, 20..25])
-multi_range |= MultiRange.new([3..6, 14..22, 30])
-multi_range.ranges
-# => [1..6, 10..25, 30..30]
-```
-
-### Merge overlaps
-```rb
-multi_range = MultiRange.new([1, 2, 4..6, 7, 8..12])
-multi_range.merge_overlaps.ranges
-# => [1..2, 4..12]
-
-multi_range = MultiRange.new([1.2..1.5, 1.7..1.9, 1.8..2.2])
-multi_range.merge_overlaps.ranges
-# => [1.2..1.5, 1.7..2.2]
-```
-
-### Check if it overlaps with the other
-
-```rb
-multi_range = MultiRange.new([1..5, 10..15, 20..25])
-multi_range.overlaps?(7..8)
-# => false
-
-multi_range.overlaps?(3..8)
-# => true
-
-multi_range.overlaps?(7..12)
-# => true
-```
-
-```rb
-multi_range = MultiRange.new([1..5, 10..15, 20..25])
-multi_range.overlaps?(MultiRange.new([6..8, 18..22]))
-# => true
-```
-
-### Range-like interface
-
-#### each
-```rb
-MultiRange.new([1..3, 6, 8..9]).each{|s| print s }
-# => 123689
-```
-
-#### map
-```rb
-MultiRange.new([1..3, 6, 8..9]).map{|s| s * 2 }
-# => [2, 4, 6, 12, 16, 18]
-```
-
-#### index_with
-```rb
-MultiRange.new([1..3, 6, 8..9]).index_with(true)
-# => { 1 => true, 2 => true, 3 => true, 6 => true, 8 => true, 9 => true }
-```
-
-#### min
-```rb
-MultiRange.new([1..3, 6, 8..9]).min
-# => 1
-```
-
-#### max
-```rb
-MultiRange.new([1..3, 6, 8..9]).max
-# => 9
-```
-
-#### to_a
-```rb
-MultiRange.new([1..3, 6, 8..9]).to_a
-# => [1, 2, 3, 6, 8, 9]
-```
-
-
-#### size
-```rb
-MultiRange.new([1..3, 6, 8..9]).size
-# => 6
-```
-
-### Warning
-
-The return value may be different when there are some overlapped ranges.
-Call `merge_overlaps` if you want to merge overlapped ranges.
-
-```rb
-MultiRange.new([1..5, 3..6]).to_a
-# => [1, 2, 3, 4, 5, 3, 4, 5, 6]
-
-MultiRange.new([1..5, 3..6]).merge_overlaps.to_a
-# => [1, 2, 3, 4, 5, 6]
-```
-
-```rb
-MultiRange.new([1..5, 3..6]).each{|s| print s }
-# => 123453456
-
-MultiRange.new([1..5, 3..6]).merge_overlaps.each{|s| print s }
-# => 123456
-```
-
-```rb
-MultiRange.new([1..5, 3..6]).map{|s| s * 2 }
-# => [2, 4, 6, 8, 10, 6, 8, 10, 12]
-
-MultiRange.new([1..5, 3..6]).merge_overlaps.map{|s| s * 2 }
-# => [2, 4, 6, 8, 10, 12]
-```
-
-```rb
-MultiRange.new([1..5, 3..6]).size
-# => 9
-
-MultiRange.new([1..5, 3..6]).merge_overlaps.size
-# => 6
-```
-
-## Development
-
-After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
-
-To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
-
-## Contributing
-
-Bug reports and pull requests are welcome on GitHub at https://github.com/khiav223577/multi_range. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
-
-
-## License
-
-The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
-
+# MultiRange
+
+[![Gem Version](https://img.shields.io/gem/v/multi_range.svg?style=flat)](http://rubygems.org/gems/multi_range)
+[![Build Status](https://travis-ci.com/khiav223577/multi_range.svg?branch=master)](https://travis-ci.org/khiav223577/multi_range)
+[![RubyGems](http://img.shields.io/gem/dt/multi_range.svg?style=flat)](http://rubygems.org/gems/multi_range)
+[![Code Climate](https://codeclimate.com/github/khiav223577/multi_range/badges/gpa.svg)](https://codeclimate.com/github/khiav223577/multi_range)
+[![Test Coverage](https://codeclimate.com/github/khiav223577/multi_range/badges/coverage.svg)](https://codeclimate.com/github/khiav223577/multi_range/coverage)
+
+## Supports
+- Ruby 1.8 ~ 2.7
+
+## Installation
+
+```ruby
+gem 'multi_range'
+```
+
+And then execute:
+
+ $ bundle
+
+Or install it yourself as:
+
+ $ gem install multi_range
+
+## Usage
+
+Allow you to manipulate a group of ranges. Such as merging overlapping ranges, doing ranges union and difference.
+
+### Sample a number
+```rb
+multi_range = MultiRange.new([1..5, 10..12])
+multi_range.sample
+# => equals to [1, 2, 3, 4, 5, 10, 11, 12].sample
+```
+
+### Difference of ranges
+```rb
+multi_range = MultiRange.new([1..10])
+multi_range -= 5..7
+multi_range.ranges
+# => [1...5, 8..10]
+```
+
+```rb
+multi_range = MultiRange.new([1..10, 50..70, 80..100])
+multi_range -= 5..85
+multi_range.ranges
+# => [1...5, 86..100]
+```
+
+```rb
+multi_range = MultiRange.new([1..10, 50..70, 80..100])
+multi_range -= MultiRange.new([5..60, 75..85])
+multi_range.ranges
+# => [1...5, 61..70, 86..100]
+```
+
+### Union ranges
+
+```rb
+multi_range = MultiRange.new([1..5])
+multi_range |= 3..8
+multi_range.ranges
+# => [1..8]
+```
+
+```rb
+multi_range = MultiRange.new([1..5, 10..15, 20..25])
+multi_range |= MultiRange.new([3..6, 14..22, 30])
+multi_range.ranges
+# => [1..6, 10..25, 30..30]
+```
+
+### Merge overlaps
+```rb
+multi_range = MultiRange.new([1, 2, 4..6, 7, 8..12])
+multi_range.merge_overlaps.ranges
+# => [1..2, 4..12]
+
+multi_range = MultiRange.new([1.2..1.5, 1.7..1.9, 1.8..2.2])
+multi_range.merge_overlaps.ranges
+# => [1.2..1.5, 1.7..2.2]
+```
+
+### Check if it overlaps with the other
+
+```rb
+multi_range = MultiRange.new([1..5, 10..15, 20..25])
+multi_range.overlaps?(7..8)
+# => false
+
+multi_range.overlaps?(3..8)
+# => true
+
+multi_range.overlaps?(7..12)
+# => true
+```
+
+```rb
+multi_range = MultiRange.new([1..5, 10..15, 20..25])
+multi_range.overlaps?(MultiRange.new([6..8, 18..22]))
+# => true
+```
+
+
+### Check if it contains overlaps
+
+```rb
+MultiRange.new([0..3, 5..10, 20..50]).contain_overlaps?
+# => false
+
+MultiRange.new([0...5, 5..10, 20..50]).contain_overlaps?
+# => false
+
+MultiRange.new([0..5, 5..10, 20..50]).contain_overlaps?
+# => true
+
+MultiRange.new([0...7, 5..10, 20..50]).contain_overlaps?
+# => true
+```
+
+### Range-like interface
+
+#### each
+```rb
+MultiRange.new([1..3, 6, 8..9]).each{|s| print s }
+# => 123689
+```
+
+#### map
+```rb
+MultiRange.new([1..3, 6, 8..9]).map{|s| s * 2 }
+# => [2, 4, 6, 12, 16, 18]
+```
+
+#### index_with
+```rb
+MultiRange.new([1..3, 6, 8..9]).index_with(true)
+# => { 1 => true, 2 => true, 3 => true, 6 => true, 8 => true, 9 => true }
+```
+
+#### min
+```rb
+MultiRange.new([1..3, 6, 8..9]).min
+# => 1
+```
+
+#### max
+```rb
+MultiRange.new([1..3, 6, 8..9]).max
+# => 9
+```
+
+#### to_a
+```rb
+MultiRange.new([1..3, 6, 8..9]).to_a
+# => [1, 2, 3, 6, 8, 9]
+```
+
+
+#### size
+```rb
+MultiRange.new([1..3, 6, 8..9]).size
+# => 6
+```
+
+### Warning
+
+The return value may be different when there are some overlapped ranges.
+Call `merge_overlaps` if you want to merge overlapped ranges.
+
+```rb
+MultiRange.new([1..5, 3..6]).to_a
+# => [1, 2, 3, 4, 5, 3, 4, 5, 6]
+
+MultiRange.new([1..5, 3..6]).merge_overlaps.to_a
+# => [1, 2, 3, 4, 5, 6]
+```
+
+```rb
+MultiRange.new([1..5, 3..6]).each{|s| print s }
+# => 123453456
+
+MultiRange.new([1..5, 3..6]).merge_overlaps.each{|s| print s }
+# => 123456
+```
+
+```rb
+MultiRange.new([1..5, 3..6]).map{|s| s * 2 }
+# => [2, 4, 6, 8, 10, 6, 8, 10, 12]
+
+MultiRange.new([1..5, 3..6]).merge_overlaps.map{|s| s * 2 }
+# => [2, 4, 6, 8, 10, 12]
+```
+
+```rb
+MultiRange.new([1..5, 3..6]).size
+# => 9
+
+MultiRange.new([1..5, 3..6]).merge_overlaps.size
+# => 6
+```
+
+## Development
+
+After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
+
+To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
+
+## Contributing
+
+Bug reports and pull requests are welcome on GitHub at https://github.com/khiav223577/multi_range. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
+
+
+## License
+
+The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
+