Class: ApipieDSL::ClassDescription
- Inherits:
-
Object
- Object
- ApipieDSL::ClassDescription
- Defined in:
- lib/apipie_dsl/class_description.rb
Instance Attribute Summary collapse
-
#deprecated ⇒ Object
readonly
Returns the value of attribute deprecated.
-
#full_description ⇒ Object
readonly
Returns the value of attribute full_description.
-
#klass ⇒ Object
readonly
Returns the value of attribute klass.
-
#methods ⇒ Object
readonly
Returns the value of attribute methods.
-
#refs ⇒ Object
readonly
Returns the value of attribute refs.
-
#sections ⇒ Object
readonly
Returns the value of attribute sections.
-
#short_description ⇒ Object
readonly
Returns the value of attribute short_description.
-
#show ⇒ Object
readonly
Returns the value of attribute show.
Instance Method Summary collapse
- #add_method_description(method_description) ⇒ Object
- #doc_url(section = nil) ⇒ Object
- #docs(section = nil, method_name = nil, lang = nil) ⇒ Object
- #id ⇒ Object
-
#initialize(klass, class_name, dsl_data = nil, version = nil) ⇒ ClassDescription
constructor
A new instance of ClassDescription.
- #method_description(method_name) ⇒ Object
- #method_descriptions ⇒ Object
- #remove_method_description(method_name) ⇒ Object
- #update_from_dsl_data(dsl_data) ⇒ Object
- #valid_method_name?(method_name) ⇒ Boolean
- #version ⇒ Object
Constructor Details
#initialize(klass, class_name, dsl_data = nil, version = nil) ⇒ ClassDescription
Returns a new instance of ClassDescription.
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/apipie_dsl/class_description.rb', line 8 def initialize(klass, class_name, dsl_data = nil, version = nil) @klass = klass @name = class_name @methods = {} @properties = [] @version = version || ApipieDSL.configuration.default_version @parent = ApipieDSL.get_class_description(ApipieDSL.superclass_for(klass), version) @refs = [@name] @sections = [] @show = true update_from_dsl_data(dsl_data) if dsl_data end |
Instance Attribute Details
#deprecated ⇒ Object (readonly)
Returns the value of attribute deprecated.
5 6 7 |
# File 'lib/apipie_dsl/class_description.rb', line 5 def deprecated @deprecated end |
#full_description ⇒ Object (readonly)
Returns the value of attribute full_description.
5 6 7 |
# File 'lib/apipie_dsl/class_description.rb', line 5 def full_description @full_description end |
#klass ⇒ Object (readonly)
Returns the value of attribute klass.
5 6 7 |
# File 'lib/apipie_dsl/class_description.rb', line 5 def klass @klass end |
#methods ⇒ Object (readonly)
Returns the value of attribute methods.
5 6 7 |
# File 'lib/apipie_dsl/class_description.rb', line 5 def methods @methods end |
#refs ⇒ Object (readonly)
Returns the value of attribute refs.
5 6 7 |
# File 'lib/apipie_dsl/class_description.rb', line 5 def refs @refs end |
#sections ⇒ Object (readonly)
Returns the value of attribute sections.
5 6 7 |
# File 'lib/apipie_dsl/class_description.rb', line 5 def sections @sections end |
#short_description ⇒ Object (readonly)
Returns the value of attribute short_description.
5 6 7 |
# File 'lib/apipie_dsl/class_description.rb', line 5 def short_description @short_description end |
#show ⇒ Object (readonly)
Returns the value of attribute show.
5 6 7 |
# File 'lib/apipie_dsl/class_description.rb', line 5 def show @show end |
Instance Method Details
#add_method_description(method_description) ⇒ Object
54 55 56 57 |
# File 'lib/apipie_dsl/class_description.rb', line 54 def add_method_description(method_description) ApipieDSL.debug "@resource_descriptions[#{version}][#{@name}].methods[#{method_description.name}] = #{method_description}" @methods[method_description.name.to_sym] = method_description end |
#doc_url(section = nil) ⇒ Object
73 74 75 76 77 78 79 |
# File 'lib/apipie_dsl/class_description.rb', line 73 def doc_url(section = nil) crumbs = [] crumbs << version if ApipieDSL.configuration.version_in_url crumbs << section if section crumbs << id ApipieDSL.full_url(crumbs.join('/')) end |
#docs(section = nil, method_name = nil, lang = nil) ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/apipie_dsl/class_description.rb', line 85 def docs(section = nil, method_name = nil, lang = nil) raise "Method #{method_name} not found for class #{id}" if method_name && !valid_method_name?(method_name) methods = if method_name.nil? @methods.map { |_key, method_desc| method_desc.docs(section, lang) } else [@methods[method_name.to_sym].docs(section, lang)] end { id: id, name: @name, doc_url: doc_url(section), short_description: ApipieDSL.translate(@short_description, lang), full_description: ApipieDSL.translate(@full_description, lang), version: version, metadata: @metadata, properties: @properties.map { |prop_desc| prop_desc.docs(section, lang) }.sort_by { |p| p[:name] }, methods: methods.sort_by { |m| m[:name] }, deprecated: @deprecated, show: @show } end |
#id ⇒ Object
44 45 46 47 48 |
# File 'lib/apipie_dsl/class_description.rb', line 44 def id return @klass.name if ApipieDSL.configuration.class_full_names? @name end |
#method_description(method_name) ⇒ Object
59 60 61 |
# File 'lib/apipie_dsl/class_description.rb', line 59 def method_description(method_name) @methods[method_name.to_sym] end |
#method_descriptions ⇒ Object
69 70 71 |
# File 'lib/apipie_dsl/class_description.rb', line 69 def method_descriptions @methods.values end |
#remove_method_description(method_name) ⇒ Object
63 64 65 66 67 |
# File 'lib/apipie_dsl/class_description.rb', line 63 def remove_method_description(method_name) return unless @methods.key?(method_name) @methods.delete(method_name) end |
#update_from_dsl_data(dsl_data) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/apipie_dsl/class_description.rb', line 21 def update_from_dsl_data(dsl_data) @name = dsl_data[:class_name] if dsl_data[:class_name] @full_description = ApipieDSL.markup_to_html(dsl_data[:description]) if dsl_data[:description] @short_description = dsl_data[:short_description] || @short_description @tag_list = dsl_data[:tag_list] if dsl_data[:meta].is_a?(Hash) @metadata&.merge!(dsl_data[:meta]) elsif dsl_data[:meta] @metadata = dsl_data[:meta] end @deprecated = dsl_data[:deprecated] || false @show = dsl_data[:show] || @show prop_names = @properties.map(&:name) (dsl_data[:properties] || []).each do |args| @properties << ApipieDSL::MethodDescription.from_dsl_data(self, args) unless prop_names.include?(args.first.to_s) end @refs = (@refs + dsl_data[:refs]).uniq if dsl_data[:refs] @sections = (@sections + dsl_data[:sections]).uniq if dsl_data[:sections] return unless dsl_data[:app_info] ApipieDSL.configuration.app_info[version] = dsl_data[:app_info] end |
#valid_method_name?(method_name) ⇒ Boolean
81 82 83 |
# File 'lib/apipie_dsl/class_description.rb', line 81 def valid_method_name?(method_name) @methods.keys.map(&:to_s).include?(method_name.to_s) end |
#version ⇒ Object
50 51 52 |
# File 'lib/apipie_dsl/class_description.rb', line 50 def version @version || @parent.try(:version) || ApipieDSL.configuration.default_version end |