Class: JekyllOgImage::Generator

Inherits:
Jekyll::Generator
  • Object
show all
Defined in:
lib/jekyll-templated-og-image/generator.rb

Instance Method Summary collapse

Instance Method Details

#generate(site) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/jekyll-templated-og-image/generator.rb', line 11

def generate(site)
  @site = site
  @config = Config.new(site.config)
  @resolver = TemplateResolver.new(@config.template_rules, site.source, @config.layouts_dir, site)
  @output_dir = File.join(site.dest, @config.output_dir)
  @source_dir = File.join(site.source, @config.output_dir)

  all_docs = site.posts.docs + site.pages + site.collections.values.flat_map(&:docs)

  documents = []
  @config.template_rules.each do |rule|
    if (collection = rule["collection"])
      case collection
      when "posts" then documents += site.posts.docs
      when "page"  then documents += site.pages
      else              documents += site.collections[collection]&.docs || []
      end
    elsif (glob = rule["path"])
      documents += all_docs.select { |doc| File.fnmatch(glob, doc.url, File::FNM_PATHNAME) }
    end
  end

  @browser = nil
  documents.uniq.reject { |doc| doc.url.end_with?(".xml", ".csv") }.each do |doc|
    generate_image(doc)
  end
ensure
  @browser&.quit
end