diff options
author | Xavier Noria <fxn@hashref.com> | 2011-06-10 03:27:45 -0700 |
---|---|---|
committer | Xavier Noria <fxn@hashref.com> | 2011-06-10 03:27:45 -0700 |
commit | 90c4885766d08bc8779d325df1fff4c8ffc85f3c (patch) | |
tree | d8d81a052de9eafd2adfc6c46f41d9c5c720b856 | |
parent | 2bda229c2fa16691efb06093613ce3232d49c1b1 (diff) | |
parent | 46ecb53fc222c037a905b341c940f2626209ff76 (diff) | |
download | rails-90c4885766d08bc8779d325df1fff4c8ffc85f3c.tar.gz rails-90c4885766d08bc8779d325df1fff4c8ffc85f3c.tar.bz2 rails-90c4885766d08bc8779d325df1fff4c8ffc85f3c.zip |
Merge pull request #1523 from raghunadhd/refactor_regex
rafactored the regex related code in the mapper class
-rw-r--r-- | actionpack/lib/action_dispatch/routing/mapper.rb | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb index ec76d1da1e..187a98342e 100644 --- a/actionpack/lib/action_dispatch/routing/mapper.rb +++ b/actionpack/lib/action_dispatch/routing/mapper.rb @@ -49,6 +49,9 @@ module ActionDispatch class Mapping #:nodoc: IGNORE_OPTIONS = [:to, :as, :via, :on, :constraints, :defaults, :only, :except, :anchor, :shallow, :shallow_path, :shallow_prefix] + ANCHOR_CHARACTERS_REGEX = %r{\A(\\A|\^)|(\\Z|\\z|\$)\Z} + SHORTHAND_REGEX = %r{^/[\w/]+$} + WILDCARD_PATH = %r{\*([^/]+)$} def initialize(set, scope, path, options) @set, @scope = set, scope @@ -77,18 +80,18 @@ module ActionDispatch # segment_keys.include?(k.to_s) || k == :controller next unless Regexp === requirement && !constraints[name] - if requirement.source =~ %r{\A(\\A|\^)|(\\Z|\\z|\$)\Z} + if requirement.source =~ ANCHOR_CHARACTERS_REGEX raise ArgumentError, "Regexp anchor characters are not allowed in routing requirements: #{requirement.inspect}" end if requirement.multiline? raise ArgumentError, "Regexp multiline option not allowed in routing requirements: #{requirement.inspect}" end end - end + end # match "account/overview" def using_match_shorthand?(path, options) - path && options.except(:via, :anchor, :to, :as).empty? && path =~ %r{^/[\w\/]+$} + path && options.except(:via, :anchor, :to, :as).empty? && path =~ SHORTHAND_REGEX end def normalize_path(path) @@ -107,7 +110,7 @@ module ActionDispatch # Add a constraint for wildcard route to make it non-greedy and match the # optional format part of the route by default - if path.match(/\*([^\/]+)$/) && @options[:format] != false + if path.match(WILDCARD_PATH) && @options[:format] != false @options.reverse_merge!(:"#{$1}" => /.+?/) end |