Class: EndState::TransitionConfigurationSet
- Inherits:
-
Object
- Object
- EndState::TransitionConfigurationSet
- Defined in:
- lib/end_state/transition_configuration_set.rb
Instance Method Summary collapse
- #add(start_state, end_state, configuration, event = nil) ⇒ Object
- #each(&block) ⇒ Object
- #end_states ⇒ Object
- #event_conflicts?(start_state, event) ⇒ Boolean
- #events ⇒ Object
- #get_configuration(start_state, end_state) ⇒ Object
- #get_end_state(start_state, event) ⇒ Object
-
#initialize ⇒ TransitionConfigurationSet
constructor
A new instance of TransitionConfigurationSet.
- #start_states ⇒ Object
Constructor Details
#initialize ⇒ TransitionConfigurationSet
Returns a new instance of TransitionConfigurationSet.
4 5 6 7 |
# File 'lib/end_state/transition_configuration_set.rb', line 4 def initialize @end_state_map = { any_state: {} } # [start_state][event] = end_state @configuration_map = { any_state: {} } # [start_state][end_state] = configuration end |
Instance Method Details
#add(start_state, end_state, configuration, event = nil) ⇒ Object
9 10 11 12 13 14 15 16 17 |
# File 'lib/end_state/transition_configuration_set.rb', line 9 def add(start_state, end_state, configuration, event = nil) if event end_state_map[start_state] ||= {} end_state_map[start_state][event] = end_state end configuration_map[start_state] ||= {} configuration_map[start_state][end_state] = configuration end |
#each(&block) ⇒ Object
48 49 50 |
# File 'lib/end_state/transition_configuration_set.rb', line 48 def each &block all_transitions.each(&block) end |
#end_states ⇒ Object
36 37 38 |
# File 'lib/end_state/transition_configuration_set.rb', line 36 def end_states configuration_map.map { |_, v| v.keys }.flatten.uniq end |
#event_conflicts?(start_state, event) ⇒ Boolean
44 45 46 |
# File 'lib/end_state/transition_configuration_set.rb', line 44 def event_conflicts?(start_state, event) !!get_end_state(start_state, event) || (start_state == :any_state && events.include?(event)) end |
#events ⇒ Object
40 41 42 |
# File 'lib/end_state/transition_configuration_set.rb', line 40 def events end_state_map.map { |_, v| v.keys }.flatten.uniq end |
#get_configuration(start_state, end_state) ⇒ Object
19 20 21 22 |
# File 'lib/end_state/transition_configuration_set.rb', line 19 def get_configuration(start_state, end_state) local_map = configuration_map[start_state] || {} local_map[end_state] || configuration_map[:any_state][end_state] end |
#get_end_state(start_state, event) ⇒ Object
24 25 26 27 |
# File 'lib/end_state/transition_configuration_set.rb', line 24 def get_end_state(start_state, event) local_map = end_state_map[start_state] || {} local_map[event] || end_state_map[:any_state][event] end |
#start_states ⇒ Object
29 30 31 32 33 34 |
# File 'lib/end_state/transition_configuration_set.rb', line 29 def start_states states = configuration_map.keys states.delete(:any_state) states += end_states unless configuration_map[:any_state].empty? states.uniq end |