Module: SimplyStated::ClassMethods

Defined in:
lib/simply_stated.rb

Instance Method Summary collapse

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
  
  eval_with_options(: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