Class: Omnizip::Buffer::SevenZipBridge::ReadProxy

Inherits:
Object
  • Object
show all
Defined in:
lib/omnizip/buffer/seven_zip_bridge.rb

Overview

Mirrors the MemoryArchive read interface onto a 7z reader

Defined Under Namespace

Classes: Entry

Instance Method Summary collapse

Constructor Details

#initialize(reader, tmp) ⇒ ReadProxy

Returns a new instance of ReadProxy.

Parameters:



75
76
77
78
# File 'lib/omnizip/buffer/seven_zip_bridge.rb', line 75

def initialize(reader, tmp)
  @reader = reader
  @tmp = tmp
end

Instance Method Details

#each_entryObject

Yield an Entry wrapper per archive entry



81
82
83
84
85
# File 'lib/omnizip/buffer/seven_zip_bridge.rb', line 81

def each_entry
  @reader.list_files.each do |entry|
    yield Entry.new(entry, @reader, @tmp)
  end
end

#entry_namesArray<String>

Entry names; directories keep a trailing slash like the ZIP listing convention

Returns:

  • (Array<String>)


102
103
104
105
106
# File 'lib/omnizip/buffer/seven_zip_bridge.rb', line 102

def entry_names
  @reader.list_files.map do |entry|
    entry.is_dir ? "#{entry.name}/" : entry.name
  end
end

#extract_all_to_memoryHash<String, String>

Filename => content for every file entry

Returns:

  • (Hash<String, String>)


90
91
92
93
94
95
96
# File 'lib/omnizip/buffer/seven_zip_bridge.rb', line 90

def extract_all_to_memory
  result = {}
  each_entry do |entry|
    result[entry.name] = entry.read unless entry.directory?
  end
  result
end

#raw_entriesArray<Formats::SevenZip::Models::FileEntry>

Read-only access to the underlying entries



111
112
113
# File 'lib/omnizip/buffer/seven_zip_bridge.rb', line 111

def raw_entries
  @reader.list_files
end