use a list to represent the supported verbs for a route object
This commit is contained in:
parent
9ba2d422f5
commit
9f2706d770
@ -195,8 +195,8 @@ def constraints
|
|||||||
|
|
||||||
def request_method_condition
|
def request_method_condition
|
||||||
if via = @options[:via]
|
if via = @options[:via]
|
||||||
via = Array(via).map { |m| m.to_s.dasherize.upcase }
|
list = Array(via).map { |m| m.to_s.dasherize.upcase }
|
||||||
{ :request_method => %r[^#{via.join('|')}$] }
|
{ :request_method => list }
|
||||||
else
|
else
|
||||||
{ }
|
{ }
|
||||||
end
|
end
|
||||||
|
@ -12,6 +12,8 @@ def initialize(set, app, conditions, requirements, defaults, name, anchor)
|
|||||||
@defaults = defaults
|
@defaults = defaults
|
||||||
@name = name
|
@name = name
|
||||||
|
|
||||||
|
# FIXME: we should not be doing this much work in a constructor.
|
||||||
|
|
||||||
@requirements = requirements.merge(defaults)
|
@requirements = requirements.merge(defaults)
|
||||||
@requirements.delete(:controller) if @requirements[:controller].is_a?(Regexp)
|
@requirements.delete(:controller) if @requirements[:controller].is_a?(Regexp)
|
||||||
@requirements.delete_if { |k, v|
|
@requirements.delete_if { |k, v|
|
||||||
@ -23,22 +25,22 @@ def initialize(set, app, conditions, requirements, defaults, name, anchor)
|
|||||||
conditions[:path_info] = ::Rack::Mount::Strexp.compile(path, requirements, SEPARATORS, anchor)
|
conditions[:path_info] = ::Rack::Mount::Strexp.compile(path, requirements, SEPARATORS, anchor)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@verbs = conditions[:request_method] || []
|
||||||
|
|
||||||
@conditions = conditions.dup
|
@conditions = conditions.dup
|
||||||
|
|
||||||
|
# Rack-Mount requires that :request_method be a regular expression.
|
||||||
|
# :request_method represents the HTTP verb that matches this route.
|
||||||
|
#
|
||||||
|
# Here we munge values before they get sent on to rack-mount.
|
||||||
|
@conditions[:request_method] = %r[^#{verb}$] unless @verbs.empty?
|
||||||
@conditions[:path_info] = Rack::Mount::RegexpWithNamedGroups.new(@conditions[:path_info]) if @conditions[:path_info]
|
@conditions[:path_info] = Rack::Mount::RegexpWithNamedGroups.new(@conditions[:path_info]) if @conditions[:path_info]
|
||||||
@conditions.delete_if{ |k,v| k != :path_info && !valid_condition?(k) }
|
@conditions.delete_if{ |k,v| k != :path_info && !valid_condition?(k) }
|
||||||
@requirements.delete_if{ |k,v| !valid_condition?(k) }
|
@requirements.delete_if{ |k,v| !valid_condition?(k) }
|
||||||
end
|
end
|
||||||
|
|
||||||
def verb
|
def verb
|
||||||
if method = conditions[:request_method]
|
@verbs.join '|'
|
||||||
case method
|
|
||||||
when Regexp
|
|
||||||
source = method.source.upcase
|
|
||||||
source =~ /\A\^[-A-Z|]+\$\Z/ ? source[1..-2] : source
|
|
||||||
else
|
|
||||||
method.to_s.upcase
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def segment_keys
|
def segment_keys
|
||||||
|
Loading…
Reference in New Issue
Block a user