class SwaggerDocsGenerator::Extractor
# Extractor
routes info
Give information about routes
Public Class Methods
new(controller, action)
click to toggle source
# File lib/swagger_docs_generator/extractor.rb, line 12 def initialize(controller, action) @action = action @controller = controller @routes = Rails.application.routes.routes end
Public Instance Methods
path()
click to toggle source
Extract path to routes and change format to parameter path
# File lib/swagger_docs_generator/extractor.rb, line 26 def path temporary = [] actual_route = nil router do |route| actual_route = extract_and_format_route(route) temporary.push(actual_route) unless temporary.include?(actual_route) actual_route end temporary end
verb()
click to toggle source
Extract verb to routes
# File lib/swagger_docs_generator/extractor.rb, line 19 def verb router do |route| route.verb.source.to_s.delete('$' + '^') end end
Private Instance Methods
controller_name()
click to toggle source
# File lib/swagger_docs_generator/extractor.rb, line 47 def controller_name @controller.controller_path end
extract_and_format_route(route)
click to toggle source
# File lib/swagger_docs_generator/extractor.rb, line 60 def extract_and_format_route(route) route.path.spec.to_s.gsub('(.:format)', '.json').gsub(/:[a-z1-9_A-Z]*/) do |word| "{#{word.delete(':')}}" end end
router() { |route, rte| ... }
click to toggle source
# File lib/swagger_docs_generator/extractor.rb, line 51 def router data = nil @routes.map do |route| rte = route.defaults data = yield(route, rte) if rte_controller(rte) && rte_action(rte) end data.downcase end
rte_action(rte)
click to toggle source
# File lib/swagger_docs_generator/extractor.rb, line 43 def rte_action(rte) rte[:action].eql?(@action.to_s) end
rte_controller(rte)
click to toggle source
# File lib/swagger_docs_generator/extractor.rb, line 39 def rte_controller(rte) rte[:controller].eql?(controller_name) end