lib/hiccup/enumerable/monthly_enumerator.rb in hiccup-0.5.15 vs lib/hiccup/enumerable/monthly_enumerator.rb in hiccup-0.5.16

- old
+ new

@@ -100,18 +100,24 @@ end def occurrences_in_month(year, month) - wday_of_first_of_month = Date.new(year, month, 1).wday monthly_pattern.map do |occurrence| if occurrence.is_a?(Array) ordinal, weekday = occurrence wday = Date::DAYNAMES.index(weekday) day = wday - day = day + 7 if (wday < wday_of_first_of_month) - day = day - wday_of_first_of_month - day = day + (ordinal * 7) - 6 + if ordinal < 0 + wday_of_last_of_month = Date.new(year, month, -1).wday + day = day + 7 if wday <= wday_of_last_of_month + day = day - wday_of_last_of_month + (ordinal * 7) - 1 + else + wday_of_first_of_month = Date.new(year, month, 1).wday + day = day + 7 if (wday < wday_of_first_of_month) + day = day - wday_of_first_of_month + day = day + (ordinal * 7) - 6 + end day else occurrence end end