Sha256: a677f060ca4e0571f53e7c56d9467a0b53108b62b284ecd54cce99f74091a4f7

Contents?: true

Size: 1.19 KB

Versions: 2

Compression:

Stored size: 1.19 KB

Contents

# require 'route_helper'

RouteHelper = YARD::Templates::Helpers::RouteHelper

def init
  sections :header, [:method_signature, T('docstring')]
  

  super
end

def header
  routes = get_current_routes
  route = options[:current_route] = routes.first

  unless route
    ::YARD::APIPlugin.log(
      "[error] Unable to find route for object: #{object}",
      ::Logger::ERROR
    )

    return
  end

  @props = {}
  @props[:method_link] = [
    'method',
    route.requirements[:controller],
    route.requirements[:action]
  ].join('.')

  @props[:subtopic] = (object.parent.tag('subtopic') || object.parent.tag('API')).text

  controller_path = "app/controllers/#{route.requirements[:controller]}_controller.rb"

  # TODO: can't we just test using object.file instead of relying on Rails ?
  controller_path = nil unless File.file?(Rails.root+controller_path)
  
  if controller_path
    @props[:path] = controller_path
    @props[:controller] = route.requirements[:controller].camelize
    @props[:action] = route.requirements[:action]
  end

  @props[:routes] = routes.map do |route|
    {
      path: RouteHelper.get_route_path(route),
      verb: RouteHelper.get_route_verb(route)
    }
  end

  erb(:header)
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
yard-api-0.3.0 templates/api/method_details/html/setup.rb
yard-api-0.2.3 templates/api/method_details/html/setup.rb