class RocketDocs::Documentation::Action
Attributes
comments[R]
controller[R]
name[R]
Public Class Methods
new(name, comments, methods, params, controller)
click to toggle source
# File lib/rocket_docs/documentation/action.rb, line 8 def initialize(name, comments, methods, params, controller) @name = name @comments = comments @methods = sanitize_methods(methods) @params = params @params.delete(:version) if params @params = @params.presence @controller = controller generate end
Public Instance Methods
default_method()
click to toggle source
# File lib/rocket_docs/documentation/action.rb, line 34 def default_method methods.first || 'GET' end
description(method = default_method)
click to toggle source
# File lib/rocket_docs/documentation/action.rb, line 24 def description(method = default_method) desc = (@doc[method] && @doc[method]['DOC']) || @doc['DOC'] RocketDocs.format_string(desc) end
methods()
click to toggle source
# File lib/rocket_docs/documentation/action.rb, line 38 def methods @methods.presence || @doc.keys.select { |m| Parser.http_keywords.include?(m) } end
params(method = default_method)
click to toggle source
# File lib/rocket_docs/documentation/action.rb, line 29 def params(method = default_method) (@doc[method] && @doc[method]['PARAMS']) || @doc['PARAMS'] || @params end
url(method = default_method)
click to toggle source
# File lib/rocket_docs/documentation/action.rb, line 19 def url(method = default_method) (@doc[method] && @doc[method]['URL']) || @doc['URL'] || router_url(method) end
Private Instance Methods
_routes()
click to toggle source
# File lib/rocket_docs/documentation/action.rb, line 50 def _routes RocketDocs::Router.app_routes end
deflated_url_params(hash, wrapper = nil)
click to toggle source
# File lib/rocket_docs/documentation/action.rb, line 84 def deflated_url_params(hash, wrapper = nil) nh = {} hash.each do |k, v| new_v = wrapper ? "#{wrapper}[#{k}]" : k if v.is_a?(Hash) nh[k] = deflated_url_params(v, k) else nh[k] = "{#{new_v}}" end end nh.symbolize_keys end
generate()
click to toggle source
# File lib/rocket_docs/documentation/action.rb, line 45 def generate return @doc = {} unless @comments.present? @doc = RocketDocs::Parser.parse_comments(@comments).value end
router_url(method = default_method)
click to toggle source
# File lib/rocket_docs/documentation/action.rb, line 65 def router_url(method = default_method) route = _routes.url_for(url_params(method)) route = route.split('?').first unless method == 'GET' CGI.unescape(route) rescue ActionController::UrlGenerationError nil end
sanitize_methods(methods)
click to toggle source
# File lib/rocket_docs/documentation/action.rb, line 54 def sanitize_methods(methods) return unless methods methods.map do |m| if m.is_a?(String) m else m.to_s.sub('(?-mix:^', '').sub('$)', '').split('|') end end.flatten end
url_params(method = default_method)
click to toggle source
# File lib/rocket_docs/documentation/action.rb, line 73 def url_params(method = default_method) hash = {} hash = deflated_url_params(params(method)) if @params hash.merge( controller: controller.full_name.downcase, action: name, version: controller.documentation.version, only_path: true ) end