Sha256: d50259f14c0926d793139bcce59ea182c962761efc5bca451157375b46bf48eb

Contents?: true

Size: 1.67 KB

Versions: 9

Compression:

Stored size: 1.67 KB

Contents

require 'epubber/generators/chapters'
require 'epubber/generators/content'
require 'epubber/generators/toc'
require 'epubber/generators/introduction'
require 'epubber/generators/static'
require 'epubber/generators/endnotes'
require 'epubber/services/persistance'
require 'epubber/services/compressor'

# Given a book and a place to work in, generates all required EPUB files
class Epubber::Generator
  attr_reader :working_dir, :book, :filename
  def initialize(book:, filename:, working_dir:)
    @book        = book
    @filename    = filename || "#{book.title}.epub"
    @working_dir = working_dir || '/tmp/epubber'
    @persistance = Epubber::Services::Persistance.new File.join(@working_dir, 'workspace')
    @generators  = []

    register_generators book: book, persistance: @persistance
  end

  def register_generators(params)
    add_generator Epubber::Generators::Content.new(params)
    add_generator Epubber::Generators::Introduction.new(params)
    add_generator Epubber::Generators::Toc.new(params)
    add_generator Epubber::Generators::Chapters.new(params)
    add_generator Epubber::Generators::Static.new(params)
    add_generator Epubber::Generators::Endnotes.new(params)
  end

  def generate
    @generators.each { |generator| generator.generate }
    pack
  end

protected

  def clean_tmp
    @persistance.clean
  end

  def compressor
    Epubber::Services::Compressor.new
  end

  def compress
    file = File.join working_dir, "#{filename}"
    dir  = File.join working_dir, 'workspace'
    compressor.compress dir, file
    return file
  end

  def pack
    path = compress
    clean_tmp
    return path
  end

  def add_generator(generator)
    @generators << generator
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
epubber-0.1.5 lib/epubber/generator.rb
epubber-0.1.4 lib/epubber/generator.rb
epubber-0.1.3 lib/epubber/generator.rb
epubber-0.1.2 lib/epubber/generator.rb
epubber-0.1.1 lib/epubber/generator.rb
epubber-0.1.0 lib/epubber/generator.rb
epubber-0.0.4 lib/epubber/generator.rb
epubber-0.0.3 lib/epubber/generator.rb
epubber-0.0.2 lib/epubber/generator.rb