Class: CalendarHelper::Calendar
- Inherits:
-
Object
- Object
- CalendarHelper::Calendar
- Defined in:
- lib/table_builder/calendar_helper.rb
Instance Attribute Summary collapse
-
#first_weekday ⇒ Object
Returns the value of attribute first_weekday.
-
#last_weekday ⇒ Object
Returns the value of attribute last_weekday.
-
#month ⇒ Object
Returns the value of attribute month.
Instance Method Summary collapse
- #days ⇒ Object
- #each_day ⇒ Object
- #first_day ⇒ Object
- #first_day_of_week(day) ⇒ Object
-
#initialize(options = {}) ⇒ Calendar
constructor
:first lets you set the first day to start the calendar on (default is the first day of the given :month and :year).
- #last_day ⇒ Object
- #last_day_of_week(day) ⇒ Object
- #mjdays ⇒ Object
- #objects_for_days(objects, day_method) ⇒ Object
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
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/table_builder/calendar_helper.rb', line 85 def initialize(={}) @year = [:year] || Time.now.year @month = [:month] || Time.now.month @first_day_of_week = [: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 = [:first]==:today ? Date.today : [:first] || Date.civil(@year, @month, 1) if [:last] == :thirty_days || [:last] == :thirty @last = @first + 30 elsif [:last] == :one_week || [:last] == :week @last = @first else @last = [:last] || Date.civil(@year, @month, -1) end end |
Instance Attribute Details
#first_weekday ⇒ Object
Returns the value of attribute first_weekday.
78 79 80 |
# File 'lib/table_builder/calendar_helper.rb', line 78 def first_weekday @first_weekday end |
#last_weekday ⇒ Object
Returns the value of attribute last_weekday.
78 79 80 |
# File 'lib/table_builder/calendar_helper.rb', line 78 def last_weekday @last_weekday end |
#month ⇒ Object
Returns the value of attribute month.
78 79 80 |
# File 'lib/table_builder/calendar_helper.rb', line 78 def month @month end |
Instance Method Details
#days ⇒ Object
140 141 142 143 144 145 146 |
# File 'lib/table_builder/calendar_helper.rb', line 140 def days unless @days @days = [] each_day{|day| @days << day} end @days end |
#each_day ⇒ Object
104 105 106 107 108 |
# File 'lib/table_builder/calendar_helper.rb', line 104 def each_day first_day.upto(last_day) do |day| yield(day) end end |
#first_day ⇒ Object
118 119 120 121 122 123 124 |
# File 'lib/table_builder/calendar_helper.rb', line 118 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
156 157 158 |
# File 'lib/table_builder/calendar_helper.rb', line 156 def first_day_of_week(day) day end |
#last_day ⇒ Object
110 111 112 113 114 115 116 |
# File 'lib/table_builder/calendar_helper.rb', line 110 def last_day last = @last while(last.wday % 7 != @last_weekday % 7) last = last.next end last end |
#last_day_of_week(day) ⇒ Object
160 161 162 163 164 165 166 |
# File 'lib/table_builder/calendar_helper.rb', line 160 def last_day_of_week(day) if day > 0 day - 1 else 6 end end |
#mjdays ⇒ Object
148 149 150 151 152 153 154 |
# File 'lib/table_builder/calendar_helper.rb', line 148 def mjdays unless @mjdays @mdays = [] each_day{|day| @days << day} end @days end |
#objects_for_days(objects, day_method) ⇒ Object
126 127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/table_builder/calendar_helper.rb', line 126 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 |