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