class Daterval::Set

Attributes

list[RW]

Public Class Methods

new(*pairs) click to toggle source
# File lib/daterval/set.rb, line 5
def initialize(*pairs)
  @list = pairs
end

Public Instance Methods

each() { |pair| ... } click to toggle source
# File lib/daterval/set.rb, line 9
def each
  list.each { |pair| yield pair }
end
merged!() click to toggle source
# File lib/daterval/set.rb, line 13
def merged!
  sorted = list.sort_by(&:begin)
  new_list = []

  sorted.each do |pair|
    merged = false

    new_list.each_with_index do |pair_x, index_x|
      if pair.overlaps?(pair_x)
        new_list[index_x] = pair.overlap(pair_x)
        merged = true
      end
    end

    new_list << pair unless merged
  end

  @list = new_list
  self
end