Class: RageRender::ComicFromImageGenerator

Inherits:
Jekyll::Generator
  • Object
show all
Defined in:
lib/ragerender/jekyll/comics.rb

Overview

Creates comics for each file found in the ‘images’ directory that does not already have an associated comic object.

Instance Method Summary collapse

Instance Method Details

#generate(site) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/ragerender/jekyll/comics.rb', line 20

def generate site
  images = site.static_files.select {|f| f.relative_path.start_with? '/images' }.map {|f| [f.basename, f] }.to_h
  comics = site.collections['comics'].docs.map {|c| [c.basename_without_ext, c] }.to_h
  missing = Set.new(images.keys) - Set.new(comics.keys)
  missing -= Set.new(comics.map {|k, c| c.data['image'] }.reject(&:nil?).map {|img| File.basename(img, '.*') })
  missing.each do |slug|
    comic = Jekyll::Document.new(images[slug].relative_path, site: site, collection: site.collections['comics'])
    comic.send(:merge_defaults)
    comic.data['slug'] = slug
    comic.data['title'] = slug
    comic.data['date'] = images[slug].modified_time
    comic.data['image'] = images[slug].relative_path
    comic.content = nil
    site.collections['comics'].docs << comic
  end
end