class Zip::FileSystem::ZipFsDir
similarity with the methods in Dir
The individual methods are not documented due to their
builtin Dir (class) object, except it works on ZipFile entries.
ZipFile::dir. An instance of ZipFsDir behaves like ruby’s
Instances of this class are normally accessed via the accessor
def chdir(directory_name)
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
def chroot(*_args)
def chroot(*_args) raise NotImplementedError, 'The chroot() function is not implemented' end
def delete(entry_name)
def delete(entry_name) unless @file.stat(entry_name).directory? raise Errno::EINVAL, "Invalid argument - #{entry_name}" end @mapped_zip.remove(entry_name) end
def entries(directory_name)
def entries(directory_name) entries = [] foreach(directory_name) { |e| entries << e } entries end
def foreach(directory_name)
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
def glob(*args, &block)
def glob(*args, &block) @mapped_zip.glob(*args, &block) end
def initialize(mapped_zip)
def initialize(mapped_zip) @mapped_zip = mapped_zip end
def mkdir(entry_name, permissions = 0o755)
def mkdir(entry_name, permissions = 0o755) @mapped_zip.mkdir(entry_name, permissions) end
def new(directory_name)
def new(directory_name) ZipFsDirIterator.new(entries(directory_name)) end
def open(directory_name)
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
def pwd
def pwd @mapped_zip.pwd end