Class: FileSystem::MockFileSystem::MockDir

Inherits:
Hash
  • Object
show all
Includes:
Node
Defined in:
lib/filesystem.rb

Overview

:nodoc:

Direct Known Subclasses

MockRoot

Instance Attribute Summary

Attributes included from Node

#mtime, #name, #parent, #permissions

Instance Method Summary collapse

Constructor Details

#initialize(name, parent = nil) ⇒ MockDir

Returns a new instance of MockDir.



223
224
225
226
227
# File 'lib/filesystem.rb', line 223

def initialize( name, parent = nil )
  super( {} )
  @name, @parent = name, parent
  @mtime = Time.now
end

Instance Method Details

#[]=(name, child) ⇒ Object



229
230
231
232
# File 'lib/filesystem.rb', line 229

def []= ( name, child )
  super
  @mtime = child.mtime
end

#delete(child = nil) ⇒ Object



234
235
236
# File 'lib/filesystem.rb', line 234

def delete( child = nil )
  child ? super( child.name ) : parent.delete( self )
end

#entriesObject



238
# File 'lib/filesystem.rb', line 238

def entries; %w( . .. ).concat( keys ); end

#fill_dir(dirname) ⇒ Object



255
256
257
258
259
260
261
262
263
# File 'lib/filesystem.rb', line 255

def fill_dir( dirname )
  dir = self[dirname]
  if dir.nil?
    dir = MockDir.new( dirname, self )
    self[dirname] = dir
    @mtime = dir.mtime
  end
  dir
end

#fill_path(dirname) ⇒ Object



265
266
267
268
269
270
271
272
# File 'lib/filesystem.rb', line 265

def fill_path( dirname )
  if dirname.size > 1
    dir = fill_dir( dirname.first )
    dir.fill_path( dirname[1..-1] )
  else
    fill_dir( dirname )
  end
end

#get_node(dirname) ⇒ Object



240
241
242
243
244
245
246
247
248
249
250
251
252
253
# File 'lib/filesystem.rb', line 240

def get_node( dirname )
  if dirname.first == '..'
    self.parent.get_node( dirname[1..-1] )
  elsif dirname.first == '.'
    self.get_node( dirname[1..-1] )
  elsif dirname.size > 1
    subdir = self[dirname.first]
    subdir ? subdir.get_node( dirname[1..-1] ) : ( raise Errno::ENOENT )
  elsif dirname == ''
    self
  else
    self[dirname.strip] or ( raise Errno::ENOENT )
  end
end

#mkdir(dirname) ⇒ Object



274
# File 'lib/filesystem.rb', line 274

def mkdir( dirname ); fill_path( Path.new( dirname ) ); end