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