Module: SimplyStated::ClassMethods
- Defined in:
- lib/simply_stated.rb
Instance Method Summary collapse
- #state(state_name, &blk) ⇒ Object
- #state_validations(state, *base_states, &blk) ⇒ Object
- #transition_from(state, &blk) ⇒ Object
Instance Method Details
#state(state_name, &blk) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/simply_stated.rb', line 35 def state(state_name, &blk) state_name = state_name.to_sym State.new(state_name, self).instance_eval(&blk) if blk self.states << state_name (self.state_validation_hash[state_name] ||= []) << state_name define_method(:"in_state_#{state_name}?") {state == state_name} define_method :"run_validations_for_state_#{state_name}?" do state_validation_hash[state_name].include? self.state end end |
#state_validations(state, *base_states, &blk) ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/simply_stated.rb', line 51 def state_validations(state, *base_states, &blk) base_states.each do |base_state| (state_validation_hash[base_state.to_sym] ||= []) << state.to_sym end (:if => :"run_validations_for_state_#{state}?", &blk) if blk end |
#transition_from(state, &blk) ⇒ Object
47 48 49 |
# File 'lib/simply_stated.rb', line 47 def transition_from(state, &blk) define_method :"transition_from_#{state}", &blk end |