class Ccs::Conflicts

Public Class Methods

new(*calendars) click to toggle source
# File lib/conflict/calendars/conflicts.rb, line 7
def initialize(*calendars)
  @calendars = calendars
  compute!
end

Public Instance Methods

compute!() click to toggle source
# File lib/conflict/calendars/conflicts.rb, line 16
def compute!
  result = @calendars.combination(2).to_a.map do |comb|
    calendar_first = comb.first
    calendar_last = comb.last
    comb if overlaps(calendar_first.stime, calendar_first.etime, calendar_last.stime, calendar_last.etime)
  end.compact
  @conflicts = Ccs::Graph.new(result).find_maximum_cliques
end
each(&block) click to toggle source
# File lib/conflict/calendars/conflicts.rb, line 25
def each(&block)                      
  @conflicts.each(&block)       
end
inspect() click to toggle source
# File lib/conflict/calendars/conflicts.rb, line 12
def inspect
  "#<Ccs::Conflict:#{'0x00%x' % (object_id << 1)} {#{@conflicts.size}}>"
end
size() click to toggle source
# File lib/conflict/calendars/conflicts.rb, line 29
def size
  @conflicts.size
end

Private Instance Methods

overlaps(t1_start,t1_end,t2_start,t2_end) click to toggle source
# File lib/conflict/calendars/conflicts.rb, line 35
def overlaps(t1_start,t1_end,t2_start,t2_end)
  if (t1_start - t2_end) * (t2_start - t1_end) >= 0
    return true
  else
    return false
  end
end