Class: RspecApiDocumentation::Views::ApiBlueprintIndex

Inherits:
MarkupIndex
  • Object
show all
Defined in:
lib/rspec_api_documentation/views/api_blueprint_index.rb

Instance Method Summary collapse

Constructor Details

#initialize(index, configuration) ⇒ ApiBlueprintIndex

Returns a new instance of ApiBlueprintIndex.



4
5
6
7
# File 'lib/rspec_api_documentation/views/api_blueprint_index.rb', line 4

def initialize(index, configuration)
  super
  self.template_name = "rspec_api_documentation/api_blueprint_index"
end

Instance Method Details

#examplesObject



40
41
42
43
44
# File 'lib/rspec_api_documentation/views/api_blueprint_index.rb', line 40

def examples
  @index.examples.map do |example|
    ApiBlueprintExample.new(example, @configuration)
  end
end

#sectionsObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/rspec_api_documentation/views/api_blueprint_index.rb', line 9

def sections
  super.map do |section|
    routes = section[:examples].group_by { |e| "#{e.route_uri}#{e.route_optionals}#{e.route_name}" }.map do |route, examples|
      attrs  = fields(:attributes, examples)
      params = fields(:parameters, examples)

      methods = examples.group_by(&:http_method).map do |http_method, examples|
        {
          http_method: http_method,
          description: examples.first.respond_to?(:action_name) && examples.first.action_name,
          examples: examples
        }
      end

      {
        "has_attributes?".to_sym => attrs.size > 0,
        "has_parameters?".to_sym => params.size > 0,
        route: format_route(examples[0]),
        route_name: examples[0][:route_name],
        attributes: attrs,
        parameters: params,
        http_methods: methods
      }
    end

    section.merge({
      routes: routes
    })
  end
end