Sha256: 2ed3706527644d02845a14f750aa0deffb64fd9426a05cfef1d9bcacf2a7f377

Contents?: true

Size: 801 Bytes

Versions: 6

Compression:

Stored size: 801 Bytes

Contents

module EPUBInfo
  class Parser
    attr_accessor :path, :metadata_document

    def self.parse(path)
      epubinfo = EPUBInfo::Parser.new
      epubinfo.path = path
      epubinfo
    end

    def metadata_document
      @metadata_document ||= load_metadata_file
    end

    private

    def load_epub
      @zipfile = Zip::ZipFile.open(@path)
    end

    def load_root_file
      load_epub if @zipfile.nil?
      @root_document = Nokogiri::XML(@zipfile.read('META-INF/container.xml'))
    end

    def metadata_path
      load_root_file if @root_document.nil?
      @root_document.css('container rootfiles rootfile:first-child').attribute('full-path').content
    end

    def load_metadata_file
      load_epub if @zipfile.nil?
      Nokogiri::XML(@zipfile.read(metadata_path))
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
epubinfo-0.2.4 lib/epubinfo/parser.rb
epubinfo-0.2.3 lib/epubinfo/parser.rb
epubinfo-0.2.2 lib/epubinfo/parser.rb
epubinfo-0.2.1 lib/epubinfo/parser.rb
epubinfo-0.2.0 lib/epubinfo/parser.rb
epubinfo-0.1.0 lib/epubinfo/parser.rb