From 20e1957add3e8f1835853f27e5629829281884e9 Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Thu, 29 Jul 2010 14:02:50 +0300 Subject: [PATCH] Define dynamic iteration methods in a faster and cleaner way. --- lib/time_ext/core_ext/time/iterations.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/time_ext/core_ext/time/iterations.rb b/lib/time_ext/core_ext/time/iterations.rb index bace2e8..57b9a81 100644 --- a/lib/time_ext/core_ext/time/iterations.rb +++ b/lib/time_ext/core_ext/time/iterations.rb @@ -55,12 +55,13 @@ class Time end # Dynamically define convenience methods, like #each_hour instead of #each(:hour). - [:year, :month, :day, :hour, :min, :minute, :sec, :second].each do |unit| + [:year, :month, :day, :hour, :min, :sec].each do |unit| [:each, :beginning_of_each, :map_each, :map_beginning_of_each].each do |method| - called_unit = (unit == :minute) ? :min : (unit == :second) ? :sec : unit define_method "#{method}_#{unit}" do |*args, &block| - send(method, called_unit, *args, &block) + send(method, unit, *args, &block) end + class_eval { alias :"#{method}_minute" :"#{method}_min" } if unit == :min + class_eval { alias :"#{method}_second" :"#{method}_sec" } if unit == :sec end end