Sha256: 43110b134262c48cc49e567277d17a30239ced2a02c2b8240e2e696b23939caa

Contents?: true

Size: 1.5 KB

Versions: 3

Compression:

Stored size: 1.5 KB

Contents

require 'rubygems'

module GEPUB
  class Gepuber
    class FileProvider
      include Enumerable
      def initialize(pattern)
        @list = Dir.glob(pattern)
      end

      def each (&block)
        @list.each {
          |f|
          File.open(f, 'rb') {
            |fio|
            yield f, fio
          }
        }
      end
    end

    attr_accessor :texts, :resources, :epubname, :coverimg, :table_of_contents, :provider
    
    def method_missing(name, *args)
      @book.send(name, *args)
    end
    
    def initialize(param)
      @book = GEPUB::Book.new()
      param.each {
        |k,v|
        self.send "#{k}=", v
      }
      @texts ||= ['[0-9]*.{xhtml,html}'] 
      @resources ||= ['*.css',  'img/*']
      @coverimg ||= 'cover.jpg'
      @table_of_contents ||= {}
      @epubname ||= 'gepuber_generated'
      @provider ||= FileProvider
    end

    def create(destbasedir = ".")
      @provider.new(@texts).each {
        |f, fio|
        @book.ordered {
          item = add_item(f, fio)
          if !@table_of_contents[f].nil?
            item.toc_text table_of_contents[f] 
            @table_of_contents.each {
              |k,v|
              k =~ /^#{f}#(.*)$/
              add_nav(item, v, $1) unless $1.nil?
            }
          end
        }
      }

      @provider.new(@resources).each {
        |f, fio|
        item = add_item(f, fio)
        item.cover_image if File.basename(f) == @coverimg
      }
      generate_epub(File.join(destbasedir, @epubname + '.epub'))      
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gepub-0.6.3.1 lib/gepub/gepuber.rb
gepub-0.6.3 lib/gepub/gepuber.rb
gepub-0.6.2 lib/gepub/gepuber.rb