Sha256: bb4ac89aec111435d69e4c9a9f052c8b43ee25d2b5f180f98ab022a94b77e6aa

Contents?: true

Size: 1.4 KB

Versions: 2

Compression:

Stored size: 1.4 KB

Contents

module Inch
  # Stores the configuration for Inch
  #
  # @see config/base.rb
  class Config
    class << self
      def instance(language = :ruby)
        if block = @blocks[language.to_s]
          config = Config::Base.new(language)
          config = config.update(&block)
          config
        else
          raise "Language not registered: #{language}"
        end
      end

      # Registers a configuration block for a given language.
      #
      # @return [void]
      def register(language, &block)
        @blocks ||= {}
        @blocks[language.to_s] = block
      end

      def codebase(language = :ruby)
        instance(language).codebase
      end

      def base(&block)
        Config::Base.new(:__base__).update(&block)
      end

      # Returns the Config object for a given +language+.
      # Optionally parses a given +path+ for inch.yml
      #
      # @return [Config::Base]
      def for(language, path = nil)
        config = instance(language)
        config.codebase.update_via_yaml(path) if path
        config
      end

      def namespace(language, submodule = nil)
        name = language.to_s.split('_').collect { |w| w.capitalize }.join
        const = ::Inch::Language.const_get(name)
        const = const.const_get(submodule) unless submodule.nil?
        const
      end
    end
  end
end

require "inch/config/base"
require "inch/config/evaluation"
require "inch/config/codebase"

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
inch-0.5.0.rc5 lib/inch/config.rb
inch-0.5.0.rc4 lib/inch/config.rb