Sha256: e32b3d990eccb246d25a83325b73020e5826b7bdae50b3a6d6f676209dbce5e2

Contents?: true

Size: 1.74 KB

Versions: 5

Compression:

Stored size: 1.74 KB

Contents

module RspecApiDocumentation
  class Configuration
    include Enumerable

    attr_reader :parent

    def initialize(parent = nil)
      @parent = parent
      @settings = parent.settings.clone if parent
    end

    def groups
      @groups ||= []
    end

    def define_group(name, &block)
      subconfig = self.class.new(self)
      subconfig.filter = name
      subconfig.docs_dir = self.docs_dir.join(name.to_s)
      subconfig.url_prefix = "#{self.url_prefix}/#{name}"
      yield subconfig
      groups << subconfig
    end

    def self.add_setting(name, opts = {})
      define_method("#{name}=") { |value| settings[name] = value }
      define_method("#{name}") do
        if settings.has_key?(name)
          settings[name]
        elsif opts[:default].respond_to?(:call)
          opts[:default].call(self)
        else
          opts[:default]
        end
      end
    end

    add_setting :docs_dir, :default => lambda { |config|
      if defined?(Rails)
        Rails.root.join("docs")
      else
        Pathname.new("docs")
      end
    }

    add_setting :format, :default => :html
    add_setting :template_path, :default => File.expand_path("../../../templates", __FILE__)
    add_setting :filter, :default => :all
    add_setting :exclusion_filter, :default => nil
    add_setting :url_prefix, :default => ""
    add_setting :app, :default => lambda { |config|
      if defined?(Rails)
        Rails.application
      else
        nil
      end
    }

    add_setting :curl_host, :default => nil
    add_setting :keep_source_order, :default => false
    add_setting :api_name, :default => "API Documentation"

    def settings
      @settings ||= {}
    end

    def each(&block)
      yield self
      groups.map { |g| g.each &block }
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rspec_api_documentation-0.9.2 lib/rspec_api_documentation/configuration.rb
rspec_api_documentation-0.9.1 lib/rspec_api_documentation/configuration.rb
rspec_api_documentation-0.9.0 lib/rspec_api_documentation/configuration.rb
rspec_api_documentation-0.8.0 lib/rspec_api_documentation/configuration.rb
rspec_api_documentation-0.7.1 lib/rspec_api_documentation/configuration.rb