class EPUB::OCF::PhysicalContainer::Rubyzip

Public Instance Methods

open() { |self| ... } click to toggle source
# File lib/epub/ocf/physical_container/rubyzip.rb, line 7
def open
  orig_encoding = Zip.force_entry_names_encoding
  begin
    Zip.force_entry_names_encoding = "UTF-8"
    Zip::File.open @container_path do |archive|
      @monitor.synchronize do
        @archive = archive
        begin
          yield self
        ensure
          @archive = nil
        end
      end
    end
  ensure
    Zip.force_entry_names_encoding = orig_encoding
  end
end
read(path_name) click to toggle source
# File lib/epub/ocf/physical_container/rubyzip.rb, line 26
def read(path_name)
  if @archive
    @archive.read(path_name)
  else
    open {|container| container.read(path_name)}
  end
rescue Errno::ENOENT => error
  raise NoEntry.from_error(error)
end