Class: Jekyll::Spaceship::Config
- Inherits:
-
Object
- Object
- Jekyll::Spaceship::Config
- Defined in:
- lib/jekyll-spaceship/cores/config.rb
Constant Summary collapse
- CONFIG_NAME =
'jekyll-spaceship'
- DEFAULT_CONFIG =
{ 'processors' => [ 'table-processor', 'mathjax-processor', 'plantuml-processor', 'mermaid-processor', 'polyfill-processor', 'media-processor', 'emoji-processor', 'element-processor' ] }
- @@store =
{}
Class Method Summary collapse
- .deep_dig(obj, key) ⇒ Object
- .deep_merge(first, second) ⇒ Object
- .load(config = {}) ⇒ Object
- .load_config ⇒ Object
- .store(section, default) ⇒ Object
- .use_processors(config) ⇒ Object
Class Method Details
.deep_dig(obj, key) ⇒ Object
34 35 36 37 38 39 40 41 42 |
# 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) ⇒ 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(config = {}) ⇒ Object
49 50 51 52 53 54 55 56 |
# 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 ⇒ Object
64 65 66 67 68 69 70 71 72 |
# 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) ⇒ Object
44 45 46 47 |
# 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 |