Class: Time

Inherits:
Object
  • Object
show all
Defined in:
lib/tickle.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#bump(attr, amount = nil) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/tickle.rb', line 76

def bump(attr, amount=nil)
  amount ||= 1
  case attr
  when :sec then
    Time.local(self.year, self.month, self.day, self.hour, self.min, self.sec) + amount
  when :min then
    Time.local(self.year, self.month, self.day, self.hour, self.min, self.sec) + (amount * 60)
  when :hour then
    Time.local(self.year, self.month, self.day, self.hour, self.min, self.sec) + (amount * 60 * 60)
  when :day then
    Time.local(self.year, self.month, self.day, self.hour, self.min, self.sec) + (amount * 60 * 60 * 24)
  when :wday then
    amount = Time::RFC2822_DAY_NAME.index(amount) if amount.is_a?(String)
    raise Exception, "specified day of week invalid.  Use #{Time::RFC2822_DAY_NAME}" unless amount
    diff = (amount > self.wday) ? (amount - self.wday) : (7 - (self.wday - amount))
    DateTime.civil(self.year, self.month, self.day, self.hour, self.min, self.sec, self.zone).next_day(diff)
  when :week then
    DateTime.civil(self.year, self.month, self.day, self.hour, self.min, self.sec, self.zone).next_day(amount * 7)
  when :month then
    DateTime.civil(self.year, self.month, self.day, self.hour, self.min, self.sec, self.zone).next_month(amount)
  when :year then
    DateTime.civil(self.year, self.month, self.day, self.hour, self.min, self.sec, self.zone).next_year(amount)
  else
    raise Exception, "type \"#{attr}\" not supported."
  end.to_time.localtime
end