lib/hiccup/enumerable/monthly_enumerator.rb in hiccup-0.5.17 vs lib/hiccup/enumerable/monthly_enumerator.rb in hiccup-0.5.18

- old
+ new

@@ -108,20 +108,21 @@ wday = Date::DAYNAMES.index(weekday) day = wday 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 + day = day - wday_of_last_of_month + (ordinal * 7) + day = last_day_of_month + day 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 + coerce_day_to_positive(occurrence) end end end @@ -162,9 +163,15 @@ def first_day_of_month 1 end + + def coerce_day_to_positive(index) + # Converts e.g. -1 (last day of the month) to 31 + return index if index > 0 + last_day_of_month + index + 1 + end end end end