Class: Mcal::Calendar

Inherits:
Object
  • Object
show all
Defined in:
lib/mcal/calendar.rb

Instance Method Summary collapse

Constructor Details

#initialize(year) ⇒ Calendar

Returns a new instance of Calendar.



5
6
7
# File 'lib/mcal/calendar.rb', line 5

def initialize(year)
  @year = year
end

Instance Method Details

#monthly(month, &block) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/mcal/calendar.rb', line 9

def monthly(month, &block)
  block ||= lambda { |day| day.mday }
  by_day = Date.new(@year, month, -1)
  week = Array.new(7, nil)
  weeks = []
  Date.new(@year, month).step(by_day).each do |day|
    if day.sunday?
      week[0] = block.call(day)
    else
      week[day.cwday] = block.call(day)
    end

    # End the current week and start a new one
    if day.saturday?
      weeks << week
      week = Array.new(7, nil)
    end
  end

  # Add leftover week (if we didn't end exactly on a Saturday)
  weeks << week if week.compact.any?
  weeks
end