Module: JSONAPIonify::Api::Base::Documentation
- Included in:
- JSONAPIonify::Api::Base
- Defined in:
- lib/jsonapionify/api/base/documentation.rb
Defined Under Namespace
Classes: Link
Class Method Summary collapse
Instance Method Summary collapse
- #description(description) ⇒ Object
- #documentation_object(request) ⇒ Object
- #documentation_order(resources_in_order) ⇒ Object
- #documentation_output(request) ⇒ Object
- #link(title, href) ⇒ Object
- #resources_in_order ⇒ Object
- #title(title) ⇒ Object
Class Method Details
.extended(klass) ⇒ Object
5 6 7 8 9 10 |
# File 'lib/jsonapionify/api/base/documentation.rb', line 5 def self.extended(klass) klass.class_eval do extend JSONAPIonify::InheritedAttributes inherited_array_attribute :links end end |
Instance Method Details
#description(description) ⇒ Object
24 25 26 |
# File 'lib/jsonapionify/api/base/documentation.rb', line 24 def description(description) @description = description end |
#documentation_object(request) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/jsonapionify/api/base/documentation.rb', line 41 def documentation_object(request) base_url = URI.parse(request.url).tap do |uri| uri.query = nil uri.path.chomp! request.path_info uri.path.chomp! '/docs' end.to_s OpenStruct.new( links: links, title: @title || self.name, base_url: base_url, description: JSONAPIonify::Documentation.render_markdown(@description || ''), resources: resources_in_order.map { |r| r.documentation_object base_url } ) end |
#documentation_order(resources_in_order) ⇒ Object
12 13 14 |
# File 'lib/jsonapionify/api/base/documentation.rb', line 12 def documentation_order(resources_in_order) @documentation_order = resources_in_order end |
#documentation_output(request) ⇒ Object
28 29 30 31 32 |
# File 'lib/jsonapionify/api/base/documentation.rb', line 28 def documentation_output(request) cache_store.fetch(cache_key documentation: true) do JSONAPIonify::Documentation.new(documentation_object(request)).result end end |
#link(title, href) ⇒ Object
16 17 18 |
# File 'lib/jsonapionify/api/base/documentation.rb', line 16 def link(title, href) links << Link.new(title, href) end |
#resources_in_order ⇒ Object
34 35 36 37 38 39 |
# File 'lib/jsonapionify/api/base/documentation.rb', line 34 def resources_in_order indexes = @documentation_order || [] resources.sort_by(&:name).sort_by do |resource| indexes.map(&:to_s).index(resource.type) || indexes.length end end |
#title(title) ⇒ Object
20 21 22 |
# File 'lib/jsonapionify/api/base/documentation.rb', line 20 def title(title) @title = title end |