class Makimono::Generator::Epub
Public Class Methods
new(config, book: GEPUB::Book.new)
click to toggle source
# File lib/makimono/generator/epub.rb, line 9 def initialize(config, book: GEPUB::Book.new) @config = config @book = book end
Public Instance Methods
generate(resources)
click to toggle source
# File lib/makimono/generator/epub.rb, line 14 def generate(resources) add_required_metadata add_optional_metadata @book.page_progression_direction = @config[:page_progression_direction] if @config[:page_progression_direction] add_items([@config.style, *resources.reject(&:ordered?)].compact) add_ordered_items(resources.select(&:ordered?).sort_by(&:number)) FileUtils.mkdir_p(@config[:output]) unless Dir.exist?(@config[:output]) @book.generate_epub("#{File.expand_path(@config[:ebook_file_name], @config[:output])}.epub") end
Private Instance Methods
add_items(resources)
click to toggle source
# File lib/makimono/generator/epub.rb, line 48 def add_items(resources) resources.each do |resource| @book.add_item(resource.path) .add_raw_content(resource.content) end end
add_optional_metadata()
click to toggle source
# File lib/makimono/generator/epub.rb, line 37 def add_optional_metadata Array(@config[:creator]).each do |creator| @book.add_creator(creator) end Array(@config[:contributor]).each do |contributor| @book.add_contributor(contributor) end @book.add_date(@config[:date].to_time.iso8601) if @config[:date] end
add_ordered_items(resources)
click to toggle source
# File lib/makimono/generator/epub.rb, line 55 def add_ordered_items(resources) @book.ordered do resources.each do |resource| @book.add_item(resource.path) .add_raw_content(resource.content) .toc_text(resource.title) end end end
add_required_metadata()
click to toggle source
# File lib/makimono/generator/epub.rb, line 28 def add_required_metadata @book.identifier = @config.fetch(:identifier) @book.lastmodified = @config.fetch(:modified) @book.title = @config.fetch(:title) @book.language = @config.fetch(:language) rescue KeyError => e raise InvalidConfigurationError, "Required metadata not found: #{e.key}" end