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