module ActsAsLiving::MethodsDefiner::ClassMethods

Public Instance Methods

alive_stages() click to toggle source
# File lib/acts_as_living/methods_definer.rb, line 103
def alive_stages
  stages.except(@death).keys
end
death() click to toggle source
# File lib/acts_as_living/methods_definer.rb, line 154
def death
  @death
end
define_phase_queries(phase, delimiters) click to toggle source
# File lib/acts_as_living/methods_definer.rb, line 176
def define_phase_queries(phase, delimiters)
  define_method("#{phase}?") do
    if delimiters.length == 1
      klass_stages[stage] == klass_stages[delimiters]
    else
      klass_stages[stage] >= klass_stages[delimiters.first] &&
        klass_stages[stage] <= klass_stages[delimiters.second]
    end
  end

  define_method("pre_#{phase}?") do
    klass_stages[stage] < klass_stages[delimiters.first] unless cancelled?
  end

  define_method("past_#{phase}?") do
    klass_stages[stage] > klass_stages[delimiters.last] || cancelled?
  end
end
define_stage_queries(stage_key) click to toggle source
# File lib/acts_as_living/methods_definer.rb, line 195
def define_stage_queries(stage_key)
  define_method("stage_changed_to_#{stage_key}?") do
    stage_changed? && stage_was.to_s == stage_key.to_s
  end

  define_method("stage_saved_to_#{stage_key}?") do
    saved_change_to_stage? && stage.to_s == stage_key.to_s
  end

  define_method("pre_#{stage_key}?") do
    klass_stages[stage] < klass_stages[stage_key] unless cancelled?
  end

  define_method("past_#{stage_key}?") do
    klass_stages[stage] > klass_stages[stage_key] || cancelled?
  end

  define_method("cancelled_from_#{stage_key}?") do
    stage == 'cancelled' && stage_was.to_s == stage_key.to_s
  end
end
first_stage() click to toggle source
# File lib/acts_as_living/methods_definer.rb, line 146
def first_stage
  (stage_keys - %i[cancelled]).first
end
first_stage?(stage) click to toggle source
# File lib/acts_as_living/methods_definer.rb, line 150
def first_stage?(stage)
  first_stage.to_s == stage.to_s
end
last_stage() click to toggle source
# File lib/acts_as_living/methods_definer.rb, line 138
def last_stage
  (stage_keys - %i[cancelled]).last
end
last_stage?(stage) click to toggle source
# File lib/acts_as_living/methods_definer.rb, line 142
def last_stage?(stage)
  last_stage.to_s == stage.to_s
end
phases() click to toggle source
# File lib/acts_as_living/methods_definer.rb, line 166
def phases
  @phases
end
phases_for(stage) click to toggle source
# File lib/acts_as_living/methods_definer.rb, line 170
def phases_for(stage)
  phases_with_ranges.keys.select do |phase|
    phases_with_ranges[phase].include? stages[stage]
  end
end
phases_with_ranges() click to toggle source
# File lib/acts_as_living/methods_definer.rb, line 158
def phases_with_ranges
  phases.map(&method(:to_phase_with_range)).to_h
end
stage_after(stage) click to toggle source
# File lib/acts_as_living/methods_definer.rb, line 124
def stage_after(stage)
  return if dying?(stage)

  index = stage_keys.find_index(stage)
  stage_keys[index + 1]
end
stage_before(stage) click to toggle source
# File lib/acts_as_living/methods_definer.rb, line 131
def stage_before(stage)
  return if first_stage?(stage)

  index = stage_keys.find_index(stage)
  stage_keys[index - 1]
end
stage_keys() click to toggle source
# File lib/acts_as_living/methods_definer.rb, line 107
def stage_keys
  @stage_keys
end
stages_after(stage) click to toggle source
# File lib/acts_as_living/methods_definer.rb, line 111
def stages_after(stage)
  return [] if dying?(stage)

  stages[stage_after(stage)..]
end
stages_before(stage) click to toggle source
# File lib/acts_as_living/methods_definer.rb, line 117
def stages_before(stage)
  return [] if first_stage?(stage)

  index = stage_keys.find_index(stage)
  stage_keys[0...index]
end
to_phase_with_range(phase, delimiter) click to toggle source
# File lib/acts_as_living/methods_definer.rb, line 162
def to_phase_with_range(phase, delimiter)
  [phase, (stages_enum[delimiter.first]..stages_enum[delimiter.last])]
end