Sha256: 641b0707053440525fe152bbf67388976e571215a08ec734f17110921823ce23

Contents?: true

Size: 1.66 KB

Versions: 13

Compression:

Stored size: 1.66 KB

Contents

require 'monitor'
require 'epub/ocf/physical_container/archive_zip'
require 'epub/ocf/physical_container/unpacked_directory'
require 'epub/ocf/physical_container/unpacked_uri'

module EPUB
  class OCF
    class PhysicalContainer
      class NoEntry < StandardError
        class << self
          def from_error(error)
            no_entry = new(error.message)
            no_entry.set_backtrace error.backtrace
            no_entry
          end
        end
      end

      @adapter = ArchiveZip

      class << self
        def find_adapter(adapter)
          return adapter if adapter.instance_of? Class
          if adapter == :Zipruby && ! const_defined?(adapter)
            require 'epub/ocf/physical_container/zipruby'
          end
          const_get adapter
        end

        def adapter
          raise NoMethodError, "undefined method `#{__method__}' for #{self}" unless self == PhysicalContainer
          @adapter
        end

        def adapter=(adapter)
          raise NoMethodError, "undefined method `#{__method__}' for #{self}" unless self == PhysicalContainer
          @adapter = find_adapter(adapter)
        end

        def open(container_path)
          _adapter.new(container_path).open do |container|
            yield container
          end
        end

        def read(container_path, path_name)
          open(container_path) {|container|
            container.read(path_name)
          }
        end

        private

        def _adapter
          (self == PhysicalContainer) ? @adapter : self
        end
      end

      def initialize(container_path)
        @container_path = container_path
        @monitor = Monitor.new
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
epub-parser-0.4.5 lib/epub/ocf/physical_container.rb
epub-parser-0.4.4 lib/epub/ocf/physical_container.rb
epub-parser-0.4.3 lib/epub/ocf/physical_container.rb
epub-parser-0.4.2 lib/epub/ocf/physical_container.rb
epub-parser-0.4.1 lib/epub/ocf/physical_container.rb
epub-parser-0.4.0 lib/epub/ocf/physical_container.rb
epub-parser-0.3.9 lib/epub/ocf/physical_container.rb
epub-parser-0.3.8 lib/epub/ocf/physical_container.rb
epub-parser-0.3.7 lib/epub/ocf/physical_container.rb
epub-parser-0.3.6 lib/epub/ocf/physical_container.rb
epub-parser-0.3.5 lib/epub/ocf/physical_container.rb
epub-parser-0.3.4 lib/epub/ocf/physical_container.rb
epub-parser-0.3.3 lib/epub/ocf/physical_container.rb