blob: 22ad9342a0f6210e967ffb47bc304c1a8e73f05e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
require 'vpim/repo'
class Occurrence
def initialize start, event, node
@dtstart = start
@event = event
@node = node
end
attr_reader :dtstart, :event, :node
end
class ChaosCalendar
def initialize
@calendar = {}
end
def push cal, node
Vpim::Icalendar.decode( cal ).each { |c| c.events.each { |e| @calendar[e] = node } }
end
def occurrences start_time, end_time
occurr = []
@calendar.each { |e, node|
if e.occurs_in?( start_time, end_time )
e.occurences( end_time ) { |t|
occurr << Occurrence.new(t,e,node) if (t + (e.duration || 0)) >= start_time
}
end
}
return occurr.sort { |lhs, rhs| lhs.dtstart <=> rhs.dtstart }
end
end
|