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