Module: Maid::NumericExtensions::Time

Defined in:
lib/maid/numeric_extensions.rb

Overview

From https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/numeric/time.rb, with some modifications since active_support ruins Logger by overriding its functionality.

Instance Method Summary collapse

Instance Method Details

#ago(time = ::Time.now) ⇒ Object Also known as: until

Reads best without arguments: 10.minutes.ago



64
65
66
# File 'lib/maid/numeric_extensions.rb', line 64

def ago(time = ::Time.now)
  time - self
end

#daysObject Also known as: day



48
49
50
# File 'lib/maid/numeric_extensions.rb', line 48

def days
  self * 24.hours
end

#fortnightsObject Also known as: fortnight



58
59
60
# File 'lib/maid/numeric_extensions.rb', line 58

def fortnights
  self * 2.weeks
end

#hoursObject Also known as: hour



43
44
45
# File 'lib/maid/numeric_extensions.rb', line 43

def hours
  self * 3600
end

#minutesObject Also known as: minute



38
39
40
# File 'lib/maid/numeric_extensions.rb', line 38

def minutes
  self * 60
end

#secondsObject Also known as: second

Enables the use of time calculations and declarations, like 45.minutes + 2.hours + 4.years.

These methods use Time#advance for precise date calculations when using from_now, ago, etc. as well as adding or subtracting their results from a Time object. For example:

# equivalent to Time.now.advance(:months => 1) 1.month.from_now

# equivalent to Time.now.advance(:years => 2) 2.years.from_now

# equivalent to Time.now.advance(:months => 4, :years => 5) (4.months + 5.years).from_now

While these methods provide precise calculation when used as in the examples above, care should be taken to note that this is not true if the result of months',years', etc is converted before use:

# equivalent to 30.days.to_i.from_now 1.month.to_i.from_now

# equivalent to 365.25.days.to_f.from_now 1.year.to_f.from_now

In such cases, Ruby's core Date[http://stdlib.rubyonrails.org/libdoc/date/rdoc/index.html] and Time[http://stdlib.rubyonrails.org/libdoc/time/rdoc/index.html] should be used for precision date and time arithmetic



33
34
35
# File 'lib/maid/numeric_extensions.rb', line 33

def seconds
  self
end

#since(time = ::Time.now) ⇒ Object Also known as: from_now

Reads best with argument: 10.minutes.since(time)



72
73
74
# File 'lib/maid/numeric_extensions.rb', line 72

def since(time = ::Time.now)
  time + self
end

#since?(other_time) ⇒ Boolean

Reads well in a case like:

1.week.since? accessed_at('filename')

Returns:

  • (Boolean)


88
89
90
# File 'lib/maid/numeric_extensions.rb', line 88

def since?(other_time)
  other_time < ago
end

#weeksObject Also known as: week



53
54
55
# File 'lib/maid/numeric_extensions.rb', line 53

def weeks
  self * 7.days
end