Skip to content

Commit 707b00b

Browse files
authored
Use route.namespace instead instance_variable_get(@options) (#931)
Rename `route_instance_variable_equals?` to `route_namespace_equals?` Refactor route_path_start_with? and route_namespace_equals? with Enumerator instead of static Arrays Refactor determine_namespaced_routes in positive logic (select over reject)
1 parent e7d6790 commit 707b00b

File tree

1 file changed

+20
-15
lines changed

1 file changed

+20
-15
lines changed

lib/grape-swagger.rb

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,10 @@ def combine_routes(app, doc_klass)
4545
end
4646

4747
def determine_namespaced_routes(name, parent_route, routes)
48-
if parent_route.nil?
49-
routes.values.flatten
50-
else
51-
parent_route.reject do |route|
52-
!route_path_start_with?(route, name) || !route_instance_variable_equals?(route, name)
53-
end
48+
return routes.values.flatten if parent_route.nil?
49+
50+
parent_route.select do |route|
51+
route_path_start_with?(route, name) || route_namespace_equals?(route, name)
5452
end
5553
end
5654

@@ -94,20 +92,27 @@ def extract_parent_route(name)
9492
matches.nil? ? route_name : matches[0].delete('/')
9593
end
9694

97-
def route_instance_variable(route)
98-
route.instance_variable_get(:@options)[:namespace]
99-
end
95+
def route_namespace_equals?(route, name)
96+
patterns = Enumerator.new do |yielder|
97+
yielder << "/#{name}"
98+
yielder << "/:version/#{name}"
99+
end
100100

101-
def route_instance_variable_equals?(route, name)
102-
route_instance_variable(route) == "/#{name}" ||
103-
route_instance_variable(route) == "/:version/#{name}"
101+
patterns.any? { |p| route.namespace == p }
104102
end
105103

106104
def route_path_start_with?(route, name)
107-
route_prefix = route.prefix ? "/#{route.prefix}/#{name}" : "/#{name}"
108-
route_versioned_prefix = route.prefix ? "/#{route.prefix}/:version/#{name}" : "/:version/#{name}"
105+
patterns = Enumerator.new do |yielder|
106+
if route.prefix
107+
yielder << "/#{route.prefix}/#{name}"
108+
yielder << "/#{route.prefix}/:version/#{name}"
109+
else
110+
yielder << "/#{name}"
111+
yielder << "/:version/#{name}"
112+
end
113+
end
109114

110-
route.path.start_with?(route_prefix, route_versioned_prefix)
115+
patterns.any? { |p| route.path.start_with?(p) }
111116
end
112117
end
113118

0 commit comments

Comments
 (0)