class Crufty::Context

Attributes

backtrace[R]
best_by[R]
expires[R]
invoke[R]
invoked_at[R]

Public Class Methods

new(best_by, expires, backtrace=nil) click to toggle source
# File lib/crufty/context.rb, line 7
def initialize(best_by, expires, backtrace=nil)
  @invoke = true

  if datetimeish?(best_by) && datetimeish?(expires)
    @invoked_at = DateTime.now
  elsif timeish?(best_by) && timeish?(expires)
    @invoked_at = Time.now
  else
    raise ArgumentError, "Unexpected time params: #{best_by.class} and #{expires.class}"
  end
  
  @best_by = best_by
  @expires = expires
  @backtrace = backtrace
end

Public Instance Methods

expired?() click to toggle source
# File lib/crufty/context.rb, line 39
def expired?
  if @expires.nil?
    false
  else
    @invoked_at >= @expires
  end
end
fresh?() click to toggle source
# File lib/crufty/context.rb, line 27
def fresh?
  !stale? && !expired?
end
stale?() click to toggle source
# File lib/crufty/context.rb, line 31
def stale?
  if @best_by.nil?
    true
  else
    @invoked_at >= @best_by
  end
end
state() click to toggle source
# File lib/crufty/context.rb, line 23
def state
  @state ||= (expired? ? :expired : (stale? ? :stale : :fresh))
end

Private Instance Methods

datetimeish?(time) click to toggle source
# File lib/crufty/context.rb, line 49
def datetimeish?(time)
  time.nil? || time.is_a?(DateTime)
end
timeish?(time) click to toggle source
# File lib/crufty/context.rb, line 53
def timeish?(time)
  time.nil? || time.is_a?(Time)
end