module Adjective::Temporable
Public Instance Methods
expired?()
click to toggle source
Checks if remaining_duration is at 0. @return [Boolean] @example
SurrogateClass.expired? #=> True/False
# File lib/adjective/concerns/temporable.rb, line 41 def expired? @remaining_duration == 0 end
expiring?()
click to toggle source
Checks if remaining_duration is at 1. @return [Boolean] @example
SurrogateClass.expired? #=> True/False
# 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)
click to toggle source
Extends the duration and keeps it within bounds. @param extension [Integer] @return [Integer] @example
SurrogateClass.extend_by(2)
# 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={})
click to toggle source
Initialize module data for Temporable
@param opts [Hash] @return [Object] @example
initialize_temporality({max_duration: 5, remaining_duration: 4})
# 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?()
click to toggle source
Checks if the status is at it's maximum duration @return [Boolean] @example
SurrogateClass.max_duration? #=> True/False
# File lib/adjective/concerns/temporable.rb, line 33 def max_duration? @max_duration == @remaining_duration end
normalize_remaining_duration()
click to toggle source
Checks and sets remaining_duration if it is out of bounds. @return [Integer] @example
SurrogateClass.normalize_remaining_duration
# 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
Private Instance Methods
invalid_durations?()
click to toggle source
Checks if initial durations are valid. @return [Boolean] @example
SurrogateClass.invalid_durations?
# File lib/adjective/concerns/temporable.rb, line 89 def invalid_durations? @remaining_duration > @max_duration end
throw_duration_theshold_error()
click to toggle source
Triggers error to the thrown is thesholds are exceeed on initialization. @return [Boolean] @private @example
SurrogateClass.throw_duration_threshold_error
# File lib/adjective/concerns/temporable.rb, line 81 def throw_duration_theshold_error raise ArgumentError, "Provded initial_duration or remaining_duration values exceed max_duration: max: #{@max_duration}, remaining: #{@remaining_duration}." end