Sha256: 6b3b3dda3f38ea8d6f463987ce397ba859aef70ce811771c8c765a30a2ec973f

Contents?: true

Size: 1.75 KB

Versions: 1

Compression:

Stored size: 1.75 KB

Contents

# encoding: utf-8

module Rapidoc

  ##
  # This class includes all info about a resource
  # To extract info from controller file uses ControllerExtractor
  # It includes an array of ActionDoc with each action information
  #
  class ResourceDoc
    attr_reader :name, :description, :controller_file, :actions_doc

    ##
    # @param resource_name [String] resource name
    # @param routes_doc [RoutesDoc] routes documentation
    #
    def initialize( resource_name, routes_actions_info )
      @name = resource_name.to_s
      @controller_file = name.to_s.pluralize + '_controller.rb'

      generate_info routes_actions_info
    end

    ##
    # Names with '/' caracter produce problems in html ids
    #
    def simple_name
      return self.name.delete '/'
    end

    private

    ##
    # Create description and actions_doc
    #
    def generate_info( routes_info )
      if routes_info
        extractor = get_controller_extractor
        @description = extractor.get_resource_info['description'] if extractor
        @actions_doc =  get_actions_doc( routes_info, extractor )
      end
    end

    ##
    # @return [ControllerExtractor] extractor that allow read controller files
    # and extract action and resource info from them
    #
    def get_controller_extractor
      if File.exists? controller_dir( @controller_file )
        ControllerExtractor.new @controller_file
      else
        nil
      end
    end

    ##
    # @return [Array] all the resource ActionDoc
    #
    def get_actions_doc( routes_actions_info, extractor )
      routes_actions_info.map do |route_info|
        controller_info = extractor ? extractor.get_action_info( route_info[:action] ) : nil
        ActionDoc.new( route_info, controller_info, examples_dir )
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rapidoc-0.0.4 lib/rapidoc/resource_doc.rb