class FakeFS::FakeDir

Fake Dir class

Attributes

atime[RW]
content[R]
ctime[R]
gid[RW]
inode[RW]
mode[RW]
mtime[RW]
name[RW]
parent[RW]
uid[RW]

Public Class Methods

new(name = nil, parent = nil) click to toggle source
# File lib/fakefs/fake/dir.rb, line 7
def initialize(name = nil, parent = nil)
  @name    = name
  @parent  = parent
  @ctime   = Time.now
  @mtime   = @ctime
  @atime   = @ctime
  @mode    = 0o100000 + (0o777 - File.umask)
  @uid     = Process.uid
  @gid     = Process.gid
  @inode   = FakeInode.new(self)
  @content = ''
  @entries = {}
end

Public Instance Methods

[](name) click to toggle source
# File lib/fakefs/fake/dir.rb, line 62
def [](name)
  @entries[name]
end
[]=(name, value) click to toggle source
# File lib/fakefs/fake/dir.rb, line 66
def []=(name, value)
  @entries[name] = value
end
clone(parent = nil) click to toggle source
# File lib/fakefs/fake/dir.rb, line 30
def clone(parent = nil)
  clone = Marshal.load(Marshal.dump(self))
  clone.entries.each do |value|
    value.parent = clone
  end
  clone.parent = parent if parent
  clone.inode = @inode.clone
  clone
end
delete(node = self) click to toggle source
# File lib/fakefs/fake/dir.rb, line 70
def delete(node = self)
  if node == self
    parent.delete(self)
    @inode.free_inode_num
  else
    @entries.delete(node.name)
  end
end
empty?() click to toggle source
# File lib/fakefs/fake/dir.rb, line 50
def empty?
  @entries.empty?
end
entries() click to toggle source
# File lib/fakefs/fake/dir.rb, line 54
def entries
  @entries.values
end
entry() click to toggle source
# File lib/fakefs/fake/dir.rb, line 21
def entry
  self
end
inspect() click to toggle source
# File lib/fakefs/fake/dir.rb, line 25
def inspect
  "(FakeDir name:#{name.inspect} " \
  "parent:#{parent.to_s.inspect} size:#{@entries.size})"
end
matches(pattern) click to toggle source
# File lib/fakefs/fake/dir.rb, line 58
def matches(pattern)
  @entries.select { |k, _v| pattern =~ k }.values
end
to_s() click to toggle source
# File lib/fakefs/fake/dir.rb, line 40
def to_s
  if parent && parent.to_s != '.'
    File.join(parent.to_s, name)
  elsif parent && parent.to_s == '.'
    "#{File::PATH_SEPARATOR}#{name}"
  else
    name
  end
end