class Spellr::ConfigLoader

Attributes

config_file[R]

:nocov:

Public Class Methods

new(config_file = ::File.join(Spellr.pwd, '.spellr.yml')) click to toggle source
# File lib/spellr/config_loader.rb, line 14
def initialize(config_file = ::File.join(Spellr.pwd, '.spellr.yml'))
  @config_file = config_file
end

Public Instance Methods

[](value) click to toggle source
# File lib/spellr/config_loader.rb, line 18
def [](value)
  load_config unless defined?(@config)
  @config[value]
end

Private Instance Methods

load_config() click to toggle source
# File lib/spellr/config_loader.rb, line 25
def load_config
  default_config = load_yaml(::File.join(__dir__, '..', '.spellr.yml'))
  project_config = load_yaml(config_file)

  @config = merge_config(default_config, project_config)
end
load_yaml(path) click to toggle source
# File lib/spellr/config_loader.rb, line 32
def load_yaml(path)
  return {} unless ::File.exist?(path)

  YAML.safe_load(::File.read(path), symbolize_names: true)
end
merge_config(default, project) click to toggle source
# File lib/spellr/config_loader.rb, line 38
def merge_config(default, project) # rubocop:disable Metrics/MethodLength
  if project.is_a?(Array) && default.is_a?(Array)
    default | project
  elsif project.is_a?(Hash) && default.is_a?(Hash)
    default.merge(project) { |_k, d, p| merge_config(d, p) }
  else
    project
  end
end