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
40
|
# 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)
browser = Ferrum::Browser.new(headless: true, browser_options: { "font-render-hinting" => "none" })
browser.resize(width: 1200, height: 630)
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
documents.uniq.reject { |doc| doc.url.end_with?(".xml", ".csv") }.each do |doc|
generate_image(browser, doc)
end
ensure
browser&.quit
end
|