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