Sha256: 564fb1cc31504de79c7f77ab06fcc6c4171a7e4bc807c537905a6b672cf37fb3

Contents?: true

Size: 1.01 KB

Versions: 2

Compression:

Stored size: 1.01 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
    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]
        options[:book]
      when params[:class]
        options[:class].new
      else
        require 'epub/book'
        Book.new
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
epub-parser-0.0.9.1 lib/epub/parser.rb
epub-parser-0.0.9 lib/epub/parser.rb