class OptParseValidator::ConfigFilesLoaderMerger

Options Files container

Attributes

result_key[RW]

Public Class Methods

supported_extensions() click to toggle source

@return [ Array<String> ] The downcased supported extensions list

# File lib/opt_parse_validator/config_files_loader_merger.rb, line 22
def self.supported_extensions
  extensions = ConfigFile.constants.select do |const|
    name = ConfigFile.const_get(const)
    name.is_a?(Class) && name != ConfigFile::Base
  end

  extensions.map { |sym| sym.to_s.downcase }
end

Public Instance Methods

<<(file_path) click to toggle source

@param [ String ] file_path

@return [ Self ]

Calls superclass method
# File lib/opt_parse_validator/config_files_loader_merger.rb, line 36
def <<(file_path)
  return self unless File.exist?(file_path)

  ext = File.extname(file_path).delete('.')

  raise Error, "The option file's extension '#{ext}' is not supported" unless self.class.supported_extensions.include?(ext)

  super(ConfigFile.const_get(ext.upcase).new(file_path))
end
parse() click to toggle source

@params [ Hash ] opts

@return [ Hash ]

# File lib/opt_parse_validator/config_files_loader_merger.rb, line 49
def parse
  result = {}

  each { |config_file| result.deep_merge!(config_file.parse) }

  result = result[result_key] || {} if result_key

  result.deep_symbolize_keys
end