Class: Zip::FileSystem::ZipFsDir

Inherits:
Object
  • Object
show all
Defined in:
lib/hotplate/gems/rubyzip-1.1.7/lib/zip/filesystem.rb

Overview

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(mappedZip) ⇒ ZipFsDir

Returns a new instance of ZipFsDir.



435
436
437
# File 'lib/hotplate/gems/rubyzip-1.1.7/lib/zip/filesystem.rb', line 435

def initialize(mappedZip)
  @mappedZip = mappedZip
end

Instance Attribute Details

#file=(value) ⇒ Object (writeonly)

Sets the attribute file

Parameters:

  • value

    the value to set the attribute file to.



439
440
441
# File 'lib/hotplate/gems/rubyzip-1.1.7/lib/zip/filesystem.rb', line 439

def file=(value)
  @file = value
end

Instance Method Details

#chdir(aDirectoryName) ⇒ Object



461
462
463
464
465
466
# File 'lib/hotplate/gems/rubyzip-1.1.7/lib/zip/filesystem.rb', line 461

def chdir(aDirectoryName)
  unless @file.stat(aDirectoryName).directory?
    raise Errno::EINVAL, "Invalid argument - #{aDirectoryName}"
  end
  @mappedZip.pwd = @file.expand_path(aDirectoryName)
end

#chroot(*args) ⇒ Object

Raises:

  • (NotImplementedError)


506
507
508
# File 'lib/hotplate/gems/rubyzip-1.1.7/lib/zip/filesystem.rb', line 506

def chroot(*args)
  raise NotImplementedError, "The chroot() function is not implemented"
end

#delete(entryName) ⇒ Object Also known as: rmdir, unlink



493
494
495
496
497
498
# File 'lib/hotplate/gems/rubyzip-1.1.7/lib/zip/filesystem.rb', line 493

def delete(entryName)
  unless @file.stat(entryName).directory?
    raise Errno::EINVAL, "Invalid argument - #{entryName}"
  end
  @mappedZip.remove(entryName)
end

#entries(aDirectoryName) ⇒ Object



468
469
470
471
472
# File 'lib/hotplate/gems/rubyzip-1.1.7/lib/zip/filesystem.rb', line 468

def entries(aDirectoryName)
  entries = []
  foreach(aDirectoryName) { |e| entries << e }
  entries
end

#foreach(aDirectoryName) ⇒ Object



478
479
480
481
482
483
484
485
486
487
488
489
490
491
# File 'lib/hotplate/gems/rubyzip-1.1.7/lib/zip/filesystem.rb', line 478

def foreach(aDirectoryName)
  unless @file.stat(aDirectoryName).directory?
    raise Errno::ENOTDIR, aDirectoryName
  end
  path = @file.expand_path(aDirectoryName)
  path << '/' unless path.end_with?('/')
  path = Regexp.escape(path)
  subDirEntriesRegex = Regexp.new("^#{path}([^/]+)$")
  @mappedZip.each { 
    |fileName|
    match = subDirEntriesRegex.match(fileName)
    yield(match[1]) unless match == nil
  }
end

#glob(*args, &block) ⇒ Object



474
475
476
# File 'lib/hotplate/gems/rubyzip-1.1.7/lib/zip/filesystem.rb', line 474

def glob(*args,&block)
  @mappedZip.glob(*args,&block)
end

#mkdir(entryName, permissionInt = 0755) ⇒ Object



502
503
504
# File 'lib/hotplate/gems/rubyzip-1.1.7/lib/zip/filesystem.rb', line 502

def mkdir(entryName, permissionInt = 0755)
  @mappedZip.mkdir(entryName, permissionInt)
end

#new(aDirectoryName) ⇒ Object



441
442
443
# File 'lib/hotplate/gems/rubyzip-1.1.7/lib/zip/filesystem.rb', line 441

def new(aDirectoryName)
  ZipFsDirIterator.new(entries(aDirectoryName))
end

#open(aDirectoryName) ⇒ Object



445
446
447
448
449
450
451
452
453
454
455
456
# File 'lib/hotplate/gems/rubyzip-1.1.7/lib/zip/filesystem.rb', line 445

def open(aDirectoryName)
  dirIt = new(aDirectoryName)
  if block_given?
    begin
      yield(dirIt)
      return nil
    ensure
      dirIt.close
    end
  end
  dirIt
end

#pwdObject Also known as: getwd



458
# File 'lib/hotplate/gems/rubyzip-1.1.7/lib/zip/filesystem.rb', line 458

def pwd; @mappedZip.pwd; end