Class: ActionDispatch::Journey::GTG::Simulator

Inherits:
Object
  • Object
show all
Defined in:
lib/action_dispatch/journey/gtg/simulator.rb

Overview

:nodoc:

Constant Summary collapse

INITIAL_STATE =
[0].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(transition_table) ⇒ Simulator

Returns a new instance of Simulator.



21
22
23
# File 'lib/action_dispatch/journey/gtg/simulator.rb', line 21

def initialize(transition_table)
  @tt = transition_table
end

Instance Attribute Details

#ttObject (readonly)

Returns the value of attribute tt.



19
20
21
# File 'lib/action_dispatch/journey/gtg/simulator.rb', line 19

def tt
  @tt
end

Instance Method Details

#memos(string) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/action_dispatch/journey/gtg/simulator.rb', line 25

def memos(string)
  input = StringScanner.new(string)
  state = INITIAL_STATE

  while sym = input.scan(%r([/.?]|[^/.?]+))
    state = tt.move(state, sym)
  end

  acceptance_states = state.each_with_object([]) do |s, memos|
    memos.concat(tt.memo(s)) if tt.accepting?(s)
  end

  acceptance_states.empty? ? yield : acceptance_states
end