Class: JekyllBookshop::SiteData
- Inherits:
-
Object
- Object
- JekyllBookshop::SiteData
- Defined in:
- lib/jekyll-bookshop/site-data.rb
Class Method Summary collapse
- .extract(site) ⇒ Object
- .hydrate_document_excerpt(document, hydrated_doc) ⇒ Object
- .hydrate_document_fields(document) ⇒ Object
- .update_browser_pages ⇒ Object
Class Method Details
.extract(site) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/jekyll-bookshop/site-data.rb', line 5 def self.extract(site) @site = site payload = {} @site.collections.each_pair do |collection, items| payload[collection] = items.docs.map do |doc| doc.data.merge(hydrate_document_fields(doc)) end end payload["data"] = {} @site.data.each_pair do |key, value| next if key.to_s.start_with?("_bookshop") payload["data"][key] = value end payload["baseurl"] = @site.baseurl payload["title"] = @site.config["title"] @site.data["_bookshop_site_data"] = { "site" => payload } update_browser_pages Jekyll.logger.info "Bookshop:", "Bookshop site data generated" end |
.hydrate_document_excerpt(document, hydrated_doc) ⇒ Object
40 41 42 43 44 |
# File 'lib/jekyll-bookshop/site-data.rb', line 40 def self.hydrate_document_excerpt(document, hydrated_doc) hydrated_doc.merge!({ "excerpt" => document.data["excerpt"].output, }) end |
.hydrate_document_fields(document) ⇒ Object
33 34 35 36 37 38 |
# File 'lib/jekyll-bookshop/site-data.rb', line 33 def self.hydrate_document_fields(document) keys = %w(content url date relative_path permalink) hydrated_doc = {} keys.each { |key| hydrated_doc[key] = document.send(key) } hydrate_document_excerpt(document, hydrated_doc) end |
.update_browser_pages ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/jekyll-bookshop/site-data.rb', line 46 def self.update_browser_pages @site.pages.each do |page| next unless @site.data["_bookshop_data_pages"]&.include?(page.url) page.output = page.output.gsub( %r!bookshop_browser_site_data = null!, "bookshop_browser_site_data = #{@site.data["_bookshop_site_data"].to_json.gsub(%r!</script!i, "<\\/script")}" ) end @site.data["_bookshop_data_pages"] = nil end |