class Zip::FileSystem::ZipFsDir
Instances of this class are normally accessed via the accessor ZipFile::dir. An instance of ZipFsDir
behaves like ruby’s builtin Dir (class) object, except it works on ZipFile entries.
The individual methods are not documented due to their similarity with the methods in Dir
Attributes
file[W]
Public Class Methods
new(mapped_zip)
click to toggle source
# File lib/zip/filesystem.rb, line 436 def initialize(mapped_zip) @mapped_zip = mapped_zip end
Public Instance Methods
chdir(directory_name)
click to toggle source
# File lib/zip/filesystem.rb, line 464 def chdir(directory_name) unless @file.stat(directory_name).directory? raise Errno::EINVAL, "Invalid argument - #{directory_name}" end @mapped_zip.pwd = @file.expand_path(directory_name) end
chroot(*_args)
click to toggle source
# File lib/zip/filesystem.rb, line 511 def chroot(*_args) raise NotImplementedError, 'The chroot() function is not implemented' end
delete(entry_name)
click to toggle source
# File lib/zip/filesystem.rb, line 497 def delete(entry_name) unless @file.stat(entry_name).directory? raise Errno::EINVAL, "Invalid argument - #{entry_name}" end @mapped_zip.remove(entry_name) end
entries(directory_name)
click to toggle source
# File lib/zip/filesystem.rb, line 472 def entries(directory_name) entries = [] foreach(directory_name) { |e| entries << e } entries end
foreach(directory_name) { |match| ... }
click to toggle source
# File lib/zip/filesystem.rb, line 482 def foreach(directory_name) unless @file.stat(directory_name).directory? raise Errno::ENOTDIR, directory_name end path = @file.expand_path(directory_name) path << '/' unless path.end_with?('/') path = Regexp.escape(path) subdir_entry_regex = Regexp.new("^#{path}([^/]+)$") @mapped_zip.each do |filename| match = subdir_entry_regex.match(filename) yield(match[1]) unless match.nil? end end
glob(*args, &block)
click to toggle source
# File lib/zip/filesystem.rb, line 478 def glob(*args, &block) @mapped_zip.glob(*args, &block) end
mkdir(entry_name, permissions = 0o755)
click to toggle source
# File lib/zip/filesystem.rb, line 507 def mkdir(entry_name, permissions = 0o755) @mapped_zip.mkdir(entry_name, permissions) end
new(directory_name)
click to toggle source
# File lib/zip/filesystem.rb, line 442 def new(directory_name) ZipFsDirIterator.new(entries(directory_name)) end
open(directory_name) { |dir_iter| ... }
click to toggle source
# File lib/zip/filesystem.rb, line 446 def open(directory_name) dir_iter = new(directory_name) if block_given? begin yield(dir_iter) return nil ensure dir_iter.close end end dir_iter end
pwd()
click to toggle source
# File lib/zip/filesystem.rb, line 459 def pwd @mapped_zip.pwd end
Also aliased as: getwd