diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2018-02-15 17:34:18 -0500 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2018-02-15 17:34:18 -0500 |
commit | 6781bd966df7f9cb89ed0beef679bf8feaf81610 (patch) | |
tree | 50a8a9320f20a39e09ba10f1bb68748262ac815d /actionpack/lib | |
parent | f282f3758d31e8445d0854e2ae7a67f17cede3bc (diff) | |
download | rails-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/lib')
-rw-r--r-- | actionpack/lib/action_dispatch/journey/scanner.rb | 15 |
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 |