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

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

Overview

:nodoc:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(transition_table) ⇒ Simulator


17
18
19
# File 'actionpack/lib/action_dispatch/journey/gtg/simulator.rb', line 17

def initialize(transition_table)
  @tt = transition_table
end

Instance Attribute Details

#ttObject (readonly)

Returns the value of attribute tt


15
16
17
# File 'actionpack/lib/action_dispatch/journey/gtg/simulator.rb', line 15

def tt
  @tt
end

Instance Method Details

#memos(string) ⇒ Object


29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'actionpack/lib/action_dispatch/journey/gtg/simulator.rb', line 29

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

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

  return yield if acceptance_states.empty?

  acceptance_states.flat_map { |x| tt.memo(x) }.compact
end

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


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

def simulate(string)
  ms = memos(string) { return }
  MatchData.new(ms)
end