Method: Journey::GTG::Simulator#simulate

Defined in:
lib/journey/gtg/simulator.rb

#simulate(string) ⇒ Object Also known as: =~, match



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/journey/gtg/simulator.rb', line 20

def simulate string
  input = StringScanner.new string
  state = [0]
  while sym = input.scan(/[\/\.\?]|[^\/\.\?]+/)
    state = tt.move(state, sym)
  end

  acceptance_states = state.find_all { |s|
    tt.accepting? s
  }

  return if acceptance_states.empty?

  memos = acceptance_states.map { |x| tt.memo x }.flatten.compact

  MatchData.new memos
end