class Swagger::Grape::Routes

Attributes

scopes[R]
types[R]

Public Class Methods

new(routes) click to toggle source
# File lib/ruby-swagger/grape/routes.rb, line 9
def initialize(routes)
  @routes = routes
  @types = []
  @scopes = []
end

Public Instance Methods

to_swagger() click to toggle source
# File lib/ruby-swagger/grape/routes.rb, line 15
def to_swagger
  swagger = Swagger::Data::Paths.new
  paths = {}

  @routes.each do |route|
    next if route.route_hidden == true # implement custom "hidden" extension

    swagger_path_name = swagger_path_name(route)
    paths[swagger_path_name] ||= Swagger::Grape::RoutePath.new(swagger_path_name)
    paths[swagger_path_name].add_operation(route)
  end

  paths.each do |path_name, path|
    swagger.add_path(path_name, path.to_swagger)
    @types = (@types | path.types).uniq
    @scopes = (@scopes | path.scopes).uniq
  end

  swagger
end

Private Instance Methods

swagger_path_name(grape_route) click to toggle source
# File lib/ruby-swagger/grape/routes.rb, line 38
def swagger_path_name(grape_route)
  grape_path_name = grape_route.route_path
  grape_prefix = grape_route.route_prefix
  grape_path_name.gsub!(/^\/#{grape_prefix}/, '') if grape_prefix
  grape_path_name.gsub!(/^\/:version/, '') # remove api version - if any
  grape_path_name.gsub!(/\(\.:format\)$/, '') # remove api format - if any
  grape_path_name.gsub!(/\(\..+\)$/, '') # remove api format - if any
  grape_path_name.gsub!(/\/:([a-zA-Z0-9_]+)/, '/{\1}') # convert parameters from :format into {format}
  grape_path_name
end