lib/inch/config.rb
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
fail "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)
const_name = ::Inch::Language.constants.detect do |name|
name.to_s.downcase == language.to_s.downcase
end
const = ::Inch::Language.const_get(const_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'