lib/multi_range.rb in multi_range-1.0.0 vs lib/multi_range.rb in multi_range-1.1.0
- old
+ new
@@ -23,11 +23,11 @@
def initialize(ranges)
@ranges = ranges.map{|s| s.is_a?(Integer) ? s..s : s }.sort_by(&:begin).freeze
end
- def flatten
+ def merge_overlaps
return MultiRange.new([]) if @ranges.size == 0
new_ranges = []
current_range = nil
@@ -80,14 +80,14 @@
return MultiRange.new(new_ranges)
end
def |(other)
other_ranges = other.is_a?(MultiRange) ? other.ranges : [other]
- return MultiRange.new(@ranges + other_ranges).flatten
+ return MultiRange.new(@ranges + other_ranges).merge_overlaps
end
def overlaps?(other)
- multi_range = flatten
+ multi_range = merge_overlaps
return multi_range.size != (multi_range - other).size
end
def sample
range = RouletteWheelSelection.sample(@ranges.map{|s| [s, s.size] }.to_h)