class GrapeMarkdown::Document

Attributes

api_class[R]
document_template[R]
properties_template[R]

Public Class Methods

new(api_class) click to toggle source
# File lib/grape-markdown/document.rb, line 10
def initialize(api_class)
  @api_class           = api_class
  @document_template   = template_for(:document)
  @properties_template = template_for(:properties)
end

Public Instance Methods

formatted_request_headers() click to toggle source
# File lib/grape-markdown/document.rb, line 44
def formatted_request_headers
  formatted_headers(GrapeMarkdown::Configuration.request_headers)
end
formatted_response_headers() click to toggle source
# File lib/grape-markdown/document.rb, line 48
def formatted_response_headers
  formatted_headers(GrapeMarkdown::Configuration.response_headers)
end
generate() click to toggle source
# File lib/grape-markdown/document.rb, line 16
def generate
  render(document_template, binding)
end
properties_table(resource) click to toggle source
# File lib/grape-markdown/document.rb, line 40
def properties_table(resource)
  render(properties_template, resource.route_binding)
end
resources() click to toggle source
# File lib/grape-markdown/document.rb, line 30
def resources
  @resources ||= begin
    grouped_routes = routes.group_by(&:route_name).reject do |name, _routes|
      resource_exclusion.include?(name.parameterize.underscore.to_sym)
    end

    grouped_routes.map { |name, routes| Resource.new(name, routes) }
  end
end
routes() click to toggle source
# File lib/grape-markdown/document.rb, line 24
def routes
  @routes ||= api_class.routes.map do |route|
    GrapeMarkdown::Route.new(route)
  end
end
show_request_sample?(route) click to toggle source
# File lib/grape-markdown/document.rb, line 52
def show_request_sample?(route)
  %w(PUT POST).include?(route.request_method)
end
write() click to toggle source
# File lib/grape-markdown/document.rb, line 20
def write
  raise 'Not yet supported'
end

Private Instance Methods

formatted_headers(headers) click to toggle source
# File lib/grape-markdown/document.rb, line 69
def formatted_headers(headers)
  return '' unless headers.present?

  spacer  = "\n" + (' ' * 12)

  strings = headers.map do |header|
    key, value = *header.first

    "#{key}: #{value}"
  end

  "    + Headers\n" + spacer + strings.join(spacer)
end
render(template, binding = nil) click to toggle source
# File lib/grape-markdown/document.rb, line 58
def render(template, binding = nil)
  ERB.new(template, nil, '-').result(binding)
end
template_for(name) click to toggle source
# File lib/grape-markdown/document.rb, line 62
def template_for(name)
  directory = File.dirname(File.expand_path(__FILE__))
  path = File.join(directory, "./templates/#{name}.md.erb")

  File.read(path)
end