Class: Jekyll::Spaceship::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/jekyll-spaceship/cores/config.rb

Constant Summary collapse

CONFIG_NAME =
'jekyll-spaceship'
DEFAULT_CONFIG =
{
  'processors' => [
    'table-processor',
    'mathjax-processor',
    'plantuml-processor',
    'polyfill-processor',
    'video-processor',
    'emoji-processor'
  ]
}
@@store =
{}

Class Method Summary collapse

Class Method Details

.deep_merge(first, second) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
# 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(filename = '_config.yml') ⇒ Object



40
41
42
43
44
45
46
47
# File 'lib/jekyll-spaceship/cores/config.rb', line 40

def self.load(filename = '_config.yml')
  config = deep_merge(
    { CONFIG_NAME => DEFAULT_CONFIG },
    YAML.load_file(File.expand_path(filename))
  )[CONFIG_NAME]
  @@store = config
  self.use_processors(config)
end

.store(section, default) ⇒ Object



34
35
36
37
38
# File 'lib/jekyll-spaceship/cores/config.rb', line 34

def self.store(section, default)
  return if @@store[section].nil?
  return @@store[section] if default.nil?
  @@store[section] = deep_merge(@@store[section], default)
end

.use_processors(config) ⇒ Object



49
50
51
52
53
# File 'lib/jekyll-spaceship/cores/config.rb', line 49

def self.use_processors(config)
  config['processors'].each do |processor|
    Register.use processor
  end
end