Sha256: ad385d76e897814d017b124cecf0c351cbdc5f779cf124ae156b288a9704b1f7

Contents?: true

Size: 1.04 KB

Versions: 4

Compression:

Stored size: 1.04 KB

Contents

require 'epub/constants'
require 'epub/parser/version'
require 'epub/parser/ocf'
require 'epub/parser/publication'
require 'epub/parser/content_document'
require 'zipruby'
require 'nokogiri'

module EPUB
  class Parser
    class << self
      def parse(file, options = {})
        new(file, options).parse
      end
    end

    def initialize(filepath, options = {})
      raise "File #{filepath} not readable" unless File.readable_real? filepath

      @filepath = File.realpath filepath
      @book = create_book options
      @book.epub_file = @filepath
    end

    def parse
      Zip::Archive.open @filepath do |zip|
        @book.ocf = OCF.parse(zip)
        @book.package = Publication.parse(zip, @book.rootfile_path)
        # @book.content_document =??? parse_content_document
        # ...
      end

      @book
    end

    private

    def create_book(params)
      case
      when params[:book]
        params[:book]
      when params[:class]
        params[:class].new
      else
        require 'epub/book'
        Book.new
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
epub-parser-0.1.2 lib/epub/parser.rb
epub-parser-0.1.1 lib/epub/parser.rb
epub-parser-0.1.0 lib/epub/parser.rb
epub-parser-0.0.9.4 lib/epub/parser.rb