Advertisement
saasbook

replace_method_with_method_object.rb

Sep 15th, 2014
356
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.77 KB | None | 0 0
  1. # An example call would now be:
  2. #  year = TimeSetter.new(367).calculate_current_year
  3. # rather than:
  4. #  year = TimeSetter.calculate_current_year(367)
  5. class TimeSetter
  6.   ORIGIN_YEAR = 1980
  7.   def initialize(days_since_origin)
  8.     @year = ORIGIN_YEAR
  9.     @days_remaining = days_since_origin
  10.   end
  11.   def calculate_current_year
  12.     while (@days_remaining > 365) do
  13.       if leap_year?
  14.         peel_off_leap_year!
  15.       else
  16.         peel_off_regular_year!
  17.       end
  18.     end
  19.     return @year
  20.   end
  21.   private
  22.   def peel_off_leap_year!
  23.     if (@days_remaining >= 366)
  24.       @days_remaining -= 366 ; @year += 1
  25.     end
  26.   end
  27.   def peel_off_regular_year!
  28.     @days_remaining -= 365 ; @year += 1
  29.   end
  30.   def leap_year?
  31.     @year % 400 == 0 ||
  32.       (@year % 4 == 0 && @year % 100 != 0)
  33.   end
  34. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement