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
Also aliased as: rmdir, unlink
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
getwd()
Alias for: pwd
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
rmdir(entry_name)
Alias for: delete