aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2018-02-15 17:34:18 -0500
committerRafael Mendonça França <rafaelmfranca@gmail.com>2018-02-15 17:34:18 -0500
commit6781bd966df7f9cb89ed0beef679bf8feaf81610 (patch)
tree50a8a9320f20a39e09ba10f1bb68748262ac815d /actionpack
parentf282f3758d31e8445d0854e2ae7a67f17cede3bc (diff)
downloadrails-6781bd966df7f9cb89ed0beef679bf8feaf81610.tar.gz
rails-6781bd966df7f9cb89ed0beef679bf8feaf81610.tar.bz2
rails-6781bd966df7f9cb89ed0beef679bf8feaf81610.zip
Revert "Revert "Merge pull request #31999 from SamSaffron/patch-1""
This reverts commit f282f3758d31e8445d0854e2ae7a67f17cede3bc.
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_dispatch/journey/scanner.rb15
1 files changed, 11 insertions, 4 deletions
diff --git a/actionpack/lib/action_dispatch/journey/scanner.rb b/actionpack/lib/action_dispatch/journey/scanner.rb
index 4ae77903fa..5ed587c1b1 100644
--- a/actionpack/lib/action_dispatch/journey/scanner.rb
+++ b/actionpack/lib/action_dispatch/journey/scanner.rb
@@ -33,6 +33,13 @@ module ActionDispatch
end
private
+
+ # takes advantage of String @- deduping capabilities in Ruby 2.5 upwards
+ # see: https://bugs.ruby-lang.org/issues/13077
+ def dedup_scan(regex)
+ r = @ss.scan(regex)
+ r ? -r : nil
+ end
def scan
case
@@ -47,15 +54,15 @@ module ActionDispatch
[:OR, "|"]
when @ss.skip(/\./)
[:DOT, "."]
- when text = @ss.scan(/:\w+/)
+ when text = dedup_scan(/:\w+/)
[:SYMBOL, text]
- when text = @ss.scan(/\*\w+/)
+ when text = dedup_scan(/\*\w+/)
[:STAR, text]
- when text = @ss.scan(/(?:[\w%\-~!$&'*+,;=@]|\\[:()])+/)
+ when text = dedup_scan(/(?:[\w%\-~!$&'*+,;=@]|\\[:()])+/)
text.tr! "\\", ""
[:LITERAL, text]
# any char
- when text = @ss.scan(/./)
+ when text = dedup_scan(/./)
[:LITERAL, text]
end
end