class Range
Public Instance Methods
merge(r)
click to toggle source
# File lib/range_array/range.rb, line 2 def merge(r) return self if self == r return self if fully_overlaps?(r) return r if fully_overlapped_by?(r) return (r.min .. self.max) if adjoins?(r) || start_overlapped_by?(r) return (self.min .. r.max) if adjoined_by?(r) || end_overlapped_by?(r) nil end
merge!(r)
click to toggle source
# File lib/range_array/range.rb, line 14 def merge!(r) merge(r) || self end
Private Instance Methods
adjoined_by?(r)
click to toggle source
# File lib/range_array/range.rb, line 40 def adjoined_by?(r) self.max.succ == r.min end
adjoins?(r)
click to toggle source
# File lib/range_array/range.rb, line 36 def adjoins?(r) r.max.succ == self.min end
end_overlapped_by?(r)
click to toggle source
# File lib/range_array/range.rb, line 32 def end_overlapped_by?(r) self.cover?(r.min) end
fully_overlapped_by?(r)
click to toggle source
# File lib/range_array/range.rb, line 24 def fully_overlapped_by?(r) r.cover?(self.min) && r.cover?(self.max) end
fully_overlaps?(r)
click to toggle source
# File lib/range_array/range.rb, line 20 def fully_overlaps?(r) start_overlapped_by?(r) && end_overlapped_by?(r) end
start_overlapped_by?(r)
click to toggle source
# File lib/range_array/range.rb, line 28 def start_overlapped_by?(r) self.cover?(r.max) end