class ApipieDSL::MethodDescription
Attributes
aliases[RW]
class_description[R]
examples[R]
full_description[RW]
klass[R]
metadata[RW]
name[R]
raises[RW]
returns[RW]
see[R]
short_description[RW]
show[RW]
signature[R]
Public Class Methods
from_dsl_data(klass, args)
click to toggle source
# File lib/apipie_dsl/method_description.rb, line 9 def self.from_dsl_data(klass, args) name, dsl_data = args ApipieDSL::MethodDescription.new(name, klass, dsl_data) end
new(name, klass, dsl_data)
click to toggle source
# File lib/apipie_dsl/method_description.rb, line 14 def initialize(name, klass, dsl_data) @name = name.to_s @klass = klass desc = dsl_data[:description] || '' @full_description = ApipieDSL.markup_to_html(desc) @short_description = dsl_data[:short_description] || '' @params = (dsl_data[:params] || []).map do |args| ApipieDSL::ParameterDescription.from_dsl_data(self, args) end @params = ApipieDSL::ParameterDescription.unify(@params) @raises = (dsl_data[:raises] || []).map do |args| ApipieDSL::ExceptionDescription.from_dsl_data(args) end # Every method in Ruby returns an onject dsl_data[:returns] = [{ object_of: Object }] if dsl_data[:returns].nil? @returns = ApipieDSL::ReturnDescription.from_dsl_data(self, dsl_data[:returns]) @tag_list = dsl_data[:tag_list] @see = (dsl_data[:see] || []).map do |method, options| options[:scope] ||= @klass ApipieDSL::SeeDescription.new(method, options) end @metadata = dsl_data[:meta] @show = dsl_data[:show].nil? ? true : dsl_data[:show] @examples = (dsl_data[:examples] || []).select do |example| next example if example[:for].nil? example[:for].to_s == @name end @aliases = dsl_data[:aliases] @signature = dsl_data[:signature] end
Public Instance Methods
doc_url(section = nil)
click to toggle source
# File lib/apipie_dsl/method_description.rb, line 87 def doc_url(section = nil) crumbs = [] crumbs << @klass.version if ApipieDSL.configuration.version_in_url crumbs << section if section crumbs << @klass.id crumbs << @name ApipieDSL.full_url(crumbs.join('/')).gsub('?', '%3F') end
docs(section = nil, lang = nil)
click to toggle source
# File lib/apipie_dsl/method_description.rb, line 96 def docs(section = nil, lang = nil) { doc_url: doc_url(section), name: @name, full_description: ApipieDSL.translate(@full_description, lang), short_description: ApipieDSL.translate(@short_description, lang), params: param_descriptions.map { |param| param.docs(lang) }.flatten, raises: raises.map(&:docs), returns: @returns.docs(lang), metadata: @metadata, see: see.map(&:docs), show: @show, examples: @examples, aliases: aliases, signature: signature } end
id()
click to toggle source
# File lib/apipie_dsl/method_description.rb, line 60 def id "#{klass.id}##{name}" end
param_descriptions()
click to toggle source
# File lib/apipie_dsl/method_description.rb, line 73 def param_descriptions @params.select(&:validator) end
params()
click to toggle source
# File lib/apipie_dsl/method_description.rb, line 68 def params param_descriptions.each_with_object({}) { |p, h| h[p.name] = p } .sort.to_h end
plain_params()
click to toggle source
# File lib/apipie_dsl/method_description.rb, line 64 def plain_params @params end
tag_list()
click to toggle source
# File lib/apipie_dsl/method_description.rb, line 77 def tag_list parent = ApipieDSL.get_class_description(ApipieDSL.superclass_for(@klass.class)) parent_tags = [parent, @klass].compact.flat_map(&:tag_list_arg) ApipieDSL::TagListDescription.new((parent_tags + @tag_list).uniq.compact) end
version()
click to toggle source
# File lib/apipie_dsl/method_description.rb, line 83 def version klass.version end