Class: CalendarHelper::Calendar

Inherits:
Object
  • Object
show all
Defined in:
lib/ical/calendar_helper.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Calendar

:first lets you set the first day to start the calendar on

(default is the first day of the given :month and :year).

:first => :today will use Date.today :last lets you set the last day of the calendar

(default is the last day of the given :month and :year).

:last => :thirty will show 30 days from :first :last => :week will show one week



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/ical/calendar_helper.rb', line 93

def initialize(options={})
  @year               = options[:year] || Time.now.year
  @month              = options[:month] || Time.now.month
  @first_day_of_week  = options[:first_day_of_week] || 0
  @first_weekday      = first_day_of_week(@first_day_of_week)
  @last_weekday       = last_day_of_week(@first_day_of_week)

  @first = options[:first]==:today ? Date.today : options[:first] || Date.civil(@year, @month, 1)

  if options[:last] == :thirty_days || options[:last] == :thirty
    @last = @first + 30
  elsif options[:last] == :one_week || options[:last] == :week
    @last = @first
  else
    @last = options[:last] || Date.civil(@year, @month, -1)
  end
end

Instance Attribute Details

#first_weekdayObject

Returns the value of attribute first_weekday.



83
84
85
# File 'lib/ical/calendar_helper.rb', line 83

def first_weekday
  @first_weekday
end

#last_weekdayObject

Returns the value of attribute last_weekday.



83
84
85
# File 'lib/ical/calendar_helper.rb', line 83

def last_weekday
  @last_weekday
end

#monthObject

Returns the value of attribute month.



83
84
85
# File 'lib/ical/calendar_helper.rb', line 83

def month
  @month
end

Instance Method Details

#daysObject



147
148
149
150
151
152
153
# File 'lib/ical/calendar_helper.rb', line 147

def days
  unless @days
    @days = []
    each_day {|day| @days << day}
  end
  @days
end

#each_dayObject



111
112
113
114
115
# File 'lib/ical/calendar_helper.rb', line 111

def each_day
  first_day.upto(last_day) do |day|
    yield(day)
  end
end

#first_dayObject



125
126
127
128
129
130
131
# File 'lib/ical/calendar_helper.rb', line 125

def first_day
  first = @first - 6
  while(first.wday % 7 != (@first_weekday) % 7)
    first = first.next
  end
  first
end

#first_day_of_week(day) ⇒ Object



163
164
165
# File 'lib/ical/calendar_helper.rb', line 163

def first_day_of_week(day)
  day
end

#last_dayObject



117
118
119
120
121
122
123
# File 'lib/ical/calendar_helper.rb', line 117

def last_day
  last = @last
  while(last.wday % 7 != @last_weekday % 7)
    last = last.next
  end
  last
end

#last_day_of_week(day) ⇒ Object



167
168
169
170
171
172
173
# File 'lib/ical/calendar_helper.rb', line 167

def last_day_of_week(day)
  if day > 0
    day - 1
  else
    6
  end
end

#mjdaysObject



155
156
157
158
159
160
161
# File 'lib/ical/calendar_helper.rb', line 155

def mjdays
  unless @mjdays
    @mdays = []
    each_day {|day| @days << day}
  end
  @days
end

#objects_for_days(objects, day_method) ⇒ Object



133
134
135
136
137
138
139
140
141
142
143
144
145
# File 'lib/ical/calendar_helper.rb', line 133

def objects_for_days(objects, day_method)
  unless @objects_for_days
    @objects_for_days = {}
    days.each{|day| @objects_for_days[day.strftime("%Y-%m-%d")] = [day, []]}
    objects.each do |o|
      date = o.send(day_method.to_sym).strftime("%Y-%m-%d")
      if @objects_for_days[date]
        @objects_for_days[date][1] << o
      end
    end
  end
  @objects_for_days
end