Class: RageRender::ChapterFromComicsGenerator

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

Overview

Create chapter objects for any chapters listed in comics but that don’t currently have an explicit page created.

Instance Method Summary collapse

Instance Method Details

#generate(site) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/ragerender/jekyll/chapter.rb', line 35

def generate site
  required = Set.new(site.collections['comics'].docs.map {|c| c.data['chapter'] }.reject(&:nil?))
  existing = Set.new(site.collections['chapters'].docs.map {|c| c.data['slug'] })
  missing = required - existing
  missing.each do |slug|
    Jekyll.logger.debug 'Adding chapter:', slug
    filename = Pathname.new(site.collections['chapters'].relative_directory).join("#{slug}.html")
    chapter = Jekyll::Document.new(filename.to_path, site: site, collection: site.collections['chapters'])
    chapter.send(:merge_defaults)
    chapter.data['slug'] ||= slug
    chapter.data['title'] ||= slug
    chapter.content = nil
    site.collections['chapters'].docs << chapter
  end
end