class FakeFS::FakeDir

Fake Dir class

def [](name)

def [](name)
  @entries[name]
end

def []=(name, value)

def []=(name, value)
  @entries[name] = value
end

def clone(parent = nil)

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

def delete(node = self)

def delete(node = self)
  if node == self
    parent.delete(self)
    @inode.free_inode_num
  else
    @entries.delete(node.name)
  end
end

def empty?

def empty?
  @entries.empty?
end

def entries

def entries
  @entries.values
end

def entry

def entry
  self
end

def initialize(name = nil, parent = nil)

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

def inspect

def inspect
  "(FakeDir name:#{name.inspect} " \
  "parent:#{parent.to_s.inspect} size:#{@entries.size})"
end

def matches(pattern)

def matches(pattern)
  @entries.select { |k, _v| pattern =~ k }.values
end

def to_s

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