aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/journey/gtg/simulator.rb
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2014-04-01 16:00:16 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2014-04-01 16:00:16 -0700
commit5fa65f94b8c16019d2ddd55f2e59b1bf1c87db89 (patch)
tree43dc3620f772bdc827aa5e2d4794453bb36035f7 /actionpack/lib/action_dispatch/journey/gtg/simulator.rb
parent9aa7c25c28325f62815b6625bdfcc6dd7565165b (diff)
parent6c6dc329f8ca87304bce3be79f4d1172219d07ad (diff)
downloadrails-5fa65f94b8c16019d2ddd55f2e59b1bf1c87db89.tar.gz
rails-5fa65f94b8c16019d2ddd55f2e59b1bf1c87db89.tar.bz2
rails-5fa65f94b8c16019d2ddd55f2e59b1bf1c87db89.zip
Merge branch 'rmc'
* rmc: push move_string in to `move` combine move_regexp and move_string so we only loop over states once do not create memo objects since we'll just throw them away only ask if `t` is empty once.
Diffstat (limited to 'actionpack/lib/action_dispatch/journey/gtg/simulator.rb')
-rw-r--r--actionpack/lib/action_dispatch/journey/gtg/simulator.rb17
1 files changed, 10 insertions, 7 deletions
diff --git a/actionpack/lib/action_dispatch/journey/gtg/simulator.rb b/actionpack/lib/action_dispatch/journey/gtg/simulator.rb
index 254c2befc4..94b0a24344 100644
--- a/actionpack/lib/action_dispatch/journey/gtg/simulator.rb
+++ b/actionpack/lib/action_dispatch/journey/gtg/simulator.rb
@@ -19,6 +19,14 @@ module ActionDispatch
end
def simulate(string)
+ ms = memos(string) { return }
+ MatchData.new(ms)
+ end
+
+ alias :=~ :simulate
+ alias :match :simulate
+
+ def memos(string)
input = StringScanner.new(string)
state = [0]
while sym = input.scan(%r([/.?]|[^/.?]+))
@@ -29,15 +37,10 @@ module ActionDispatch
tt.accepting? s
}
- return if acceptance_states.empty?
+ return yield if acceptance_states.empty?
- memos = acceptance_states.flat_map { |x| tt.memo(x) }.compact
-
- MatchData.new(memos)
+ acceptance_states.flat_map { |x| tt.memo(x) }.compact
end
-
- alias :=~ :simulate
- alias :match :simulate
end
end
end