Module: FastComments::Jekyll::ConfigResolver
- Defined in:
- lib/fastcomments/jekyll/config_resolver.rb
Overview
Merges widget config from three sources and camelizes the result. Precedence (later wins): global _config.yml defaults < page-derived < tag attributes.
Class Method Summary collapse
- .derive(context) ⇒ Object
- .global_config(context) ⇒ Object
- .page(context) ⇒ Object
- .resolve(context, attrs, derive_page_context: false) ⇒ Object
- .site(context) ⇒ Object
Class Method Details
.derive(context) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/fastcomments/jekyll/config_resolver.rb', line 30 def derive(context) page = page(context) # Real Jekyll exposes `page` as a Liquid::Drop (Jekyll::Drops::DocumentDrop), # not a Hash; both answer page["url"]/page["title"], so guard on [] not Hash. return {} unless page.respond_to?(:[]) derived = {} derived["url_id"] = page["url"] if page["url"] site = site(context) site_url = site ? site.config["url"] : nil derived["url"] = "#{site_url}#{page["url"]}" if site_url && !site_url.to_s.empty? && page["url"] derived["page_title"] = page["title"] if page["title"] derived end |
.global_config(context) ⇒ Object
22 23 24 25 26 27 28 |
# File 'lib/fastcomments/jekyll/config_resolver.rb', line 22 def global_config(context) site = site(context) return {} unless site config = site.config["fastcomments"] config.is_a?(Hash) ? config : {} end |
.page(context) ⇒ Object
55 56 57 58 59 |
# File 'lib/fastcomments/jekyll/config_resolver.rb', line 55 def page(context) context["page"] rescue StandardError nil end |
.resolve(context, attrs, derive_page_context: false) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/fastcomments/jekyll/config_resolver.rb', line 8 def resolve(context, attrs, derive_page_context: false) merged = {} global_config(context).each { |key, value| merged[key.to_s] = value } if derive_page_context derive(context).each { |key, value| merged[key] = value unless value.nil? } end attrs.each { |key, value| merged[key.to_s] = value } KeyMapper.map_keys(Util.sanitize_config(merged)) end |
.site(context) ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/fastcomments/jekyll/config_resolver.rb', line 47 def site(context) registers = context.registers site = registers && registers[:site] site if site.respond_to?(:config) rescue StandardError nil end |