Module: Adjective::Temporable

Included in:
Status
Defined in:
lib/adjective/concerns/temporable.rb

Instance Method Summary collapse

Instance Method Details

#expired?Boolean

Checks if remaining_duration is at 0.

Examples:

SurrogateClass.expired? #=> True/False

Returns:

  • (Boolean)


41
42
43
# File 'lib/adjective/concerns/temporable.rb', line 41

def expired?
  @remaining_duration == 0
end

#expiring?Boolean

Checks if remaining_duration is at 1.

Examples:

SurrogateClass.expired? #=> True/False

Returns:

  • (Boolean)


49
50
51
52
# File 'lib/adjective/concerns/temporable.rb', line 49

def expiring?
  # This method seems like a meme, but I think it makes sense
  @remaining_duration == 1
end

#extend_by(extension) ⇒ Integer

Extends the duration and keeps it within bounds.

Examples:

SurrogateClass.extend_by(2)

Parameters:

  • extension (Integer)

Returns:

  • (Integer)


68
69
70
71
72
# File 'lib/adjective/concerns/temporable.rb', line 68

def extend_by(extension)
  @remaining_duration += extension
  normalize_remaining_duration
  return @remaining_duration
end

#initialize_temporality(opts = {}) ⇒ Object

Initialize module data for Temporable

Examples:

initialize_temporality({max_duration: 5, remaining_duration: 4})

Parameters:

  • opts (Hash) (defaults to: {})

Returns:

  • (Object)


16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/adjective/concerns/temporable.rb', line 16

def initialize_temporality(opts={})
  @max_duration = opts[:max_duration] ||= 1
  @remaining_duration = opts[:remaining_duration] ||= @max_duration

  throw_duration_theshold_error if invalid_durations?

  [:max_duration, :remaining_duration].each do |attribute| 
    self.class.send(:attr_accessor, attribute)
  end
  normalize_remaining_duration 
  return self     
end

#max_duration?Boolean

Checks if the status is at it’s maximum duration

Examples:

SurrogateClass.max_duration? #=> True/False

Returns:

  • (Boolean)


33
34
35
# File 'lib/adjective/concerns/temporable.rb', line 33

def max_duration?
  @max_duration == @remaining_duration
end

#normalize_remaining_durationInteger

Checks and sets remaining_duration if it is out of bounds.

Examples:

SurrogateClass.normalize_remaining_duration

Returns:

  • (Integer)


58
59
60
61
# File 'lib/adjective/concerns/temporable.rb', line 58

def normalize_remaining_duration
  @remaining_duration = @max_duration if @remaining_duration > @max_duration
  @remaining_duration = 0 if @remaining_duration < 0
end