3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/action_query/route.rb', line 3
def self.result
variances = HashWithIndifferentAccess.new(::Rails.application.config.action_query) rescue {}
controllers = HashWithIndifferentAccess.new
::Rails.application.routes.routes.each do |route|
next unless route.defaults[:controller]
names = route.defaults[:controller].split('/')
obj = controllers
names.each_with_index do |name,index|
obj[name.classify()] ||= HashWithIndifferentAccess.new
obj = obj[name.classify()]
end
obj[route.defaults[:action]] ||= []
notArray = !!route.path.spec.to_s.match(/\:id/) || ['CREATE','NEW'].include?(route.defaults[:action].upcase)
if (variance = HashWithIndifferentAccess.new(variances[route.defaults[:controller]])).present?
notArray = !variance[route.defaults[:action]][:array] unless variance[route.defaults[:action]].nil?
end
path = {
parts: route.parts.map(&:to_s),
path: route.path.spec.to_s,
verb: route.verb,
requirements: route.required_parts.map(&:to_s),
method: route.defaults[:action],
array: !notArray
}
obj[route.defaults[:action]] << path
end
controllers
end
|