Module: StatePattern::ClassMethods
- Defined in:
- lib/state_pattern.rb
Instance Method Summary collapse
- #initial_state_class ⇒ Object
- #set_initial_state(state_class) ⇒ Object
- #state_classes ⇒ Object
- #state_events ⇒ Object
- #state_methods ⇒ Object
- #transitions_hash ⇒ Object
- #valid_transitions(transitions_hash) ⇒ Object
Instance Method Details
#initial_state_class ⇒ Object
10 11 12 |
# File 'lib/state_pattern.rb', line 10 def initial_state_class @initial_state_class end |
#set_initial_state(state_class) ⇒ Object
14 15 16 17 |
# File 'lib/state_pattern.rb', line 14 def set_initial_state(state_class) @initial_state_class = state_class create_methods end |
#state_classes ⇒ Object
28 29 30 |
# File 'lib/state_pattern.rb', line 28 def state_classes (transitions_hash.to_a << initial_state_class).flatten.uniq.select{|t| t.respond_to?(:ancestors) && t.ancestors.include?(StatePattern::State)} end |
#state_events ⇒ Object
24 25 26 |
# File 'lib/state_pattern.rb', line 24 def state_events transitions_hash.to_a.flatten.uniq.select{|t| t.respond_to?(:to_sym)}.map{|s| s.to_sym} end |
#state_methods ⇒ Object
19 20 21 22 |
# File 'lib/state_pattern.rb', line 19 def state_methods state_classes_with_their_bases = state_classes.map{|c| c.ancestors.select{|a| a.ancestors.include?(StatePattern::State) && a != StatePattern::State}}.flatten.uniq (state_classes_with_their_bases.map{|state_class| state_class.public_instance_methods(false)}.flatten.uniq - ["enter", "exit"]).map{|s| s.to_sym} end |
#transitions_hash ⇒ Object
40 41 42 |
# File 'lib/state_pattern.rb', line 40 def transitions_hash @transitions_hash end |
#valid_transitions(transitions_hash) ⇒ Object
32 33 34 35 36 37 38 |
# File 'lib/state_pattern.rb', line 32 def valid_transitions(transitions_hash) @transitions_hash = transitions_hash @transitions_hash.each do |key, value| @transitions_hash[key] = [value] if !value.respond_to?(:to_ary) end create_methods end |