class Jekyll::Spaceship::Config

Constants

CONFIG_NAME
DEFAULT_CONFIG

Public Class Methods

deep_dig(obj, key) click to toggle source
# File lib/jekyll-spaceship/cores/config.rb, line 34
def self.deep_dig(obj, key)
  if obj.respond_to?(:key?) && obj.key?(key)
    obj[key]
  elsif obj.respond_to?(:each)
    result = nil
    obj.find { |*a| result = self.deep_dig(a.last, key) }
    result
  end
end
deep_merge(first, second) click to toggle source
# File lib/jekyll-spaceship/cores/config.rb, line 21
def self.deep_merge(first, second)
  merger = proc do |_, f, s|
    if Hash === f && Hash === s
      f.merge(s, &merger)
    elsif Array === f && Array === s
      s || f
    else
      [:undefined, nil, :nil].include?(s) ? f : s
    end
  end
  first.merge(second.to_h, &merger)
end
load(config = {}) click to toggle source
# File lib/jekyll-spaceship/cores/config.rb, line 49
def self.load(config = {})
  config = deep_merge(
    { CONFIG_NAME => DEFAULT_CONFIG },
    config
  )[CONFIG_NAME]
  @@store = config
  self.use_processors(config)
end
load_config() click to toggle source
# File lib/jekyll-spaceship/cores/config.rb, line 64
def self.load_config
  # post load site config for `group :jekyll_plugin`
  Jekyll::Hooks.register :site, :after_init do |site|
    # load config
    self.load(site.config)
    # dispatch site after_init event
    Manager.dispatch(site, :site, :after_init)
  end
end
store(section, default) click to toggle source
# File lib/jekyll-spaceship/cores/config.rb, line 44
def self.store(section, default)
  return @@store[section] if default.nil?
  @@store[section] = deep_merge(default, @@store[section])
end
use_processors(config) click to toggle source
# File lib/jekyll-spaceship/cores/config.rb, line 58
def self.use_processors(config)
  config['processors'].each do |processor|
    Register.use processor
  end
end