Class: MemFs::File::Stat

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
MemFs::FilesystemAccess
Defined in:
lib/memfs/file/stat.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from MemFs::FilesystemAccess

#fs

Constructor Details

#initialize(path, dereference = false) ⇒ Stat

Returns a new instance of Stat.



55
56
57
58
# File 'lib/memfs/file/stat.rb', line 55

def initialize(path, dereference = false)
  entry = fs.find!(path)
  @entry = dereference ? entry.dereferenced : entry
end

Instance Attribute Details

#entryObject (readonly)

Returns the value of attribute entry.



10
11
12
# File 'lib/memfs/file/stat.rb', line 10

def entry
  @entry
end

Instance Method Details

#blockdev?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/memfs/file/stat.rb', line 23

def blockdev?
  !!entry.block_device
end

#chardev?Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/memfs/file/stat.rb', line 27

def chardev?
  !!entry.character_device
end

#directory?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/memfs/file/stat.rb', line 31

def directory?
  entry.is_a?(Fake::Directory)
end

#executable?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/memfs/file/stat.rb', line 35

def executable?
  user_executable? || group_executable? || !!world_executable?
end

#executable_real?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/memfs/file/stat.rb', line 39

def executable_real?
  user_executable_real? || group_executable_real? || !!world_executable?
end

#file?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/memfs/file/stat.rb', line 43

def file?
  entry.is_a?(Fake::File)
end

#ftypeObject



47
48
49
# File 'lib/memfs/file/stat.rb', line 47

def ftype
  entry.type
end

#grpowned?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/memfs/file/stat.rb', line 51

def grpowned?
  gid == Process.egid
end

#owned?Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/memfs/file/stat.rb', line 60

def owned?
  uid == Process.euid
end

#pipe?Boolean

Returns:

  • (Boolean)


64
65
66
# File 'lib/memfs/file/stat.rb', line 64

def pipe?
  false
end

#readable?Boolean

Returns:

  • (Boolean)


68
69
70
# File 'lib/memfs/file/stat.rb', line 68

def readable?
  user_readable? || group_readable? || !!world_readable?
end

#readable_real?Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/memfs/file/stat.rb', line 72

def readable_real?
  user_readable_real? || group_readable_real? || !!world_readable?
end

#setgid?Boolean

Returns:

  • (Boolean)


76
77
78
# File 'lib/memfs/file/stat.rb', line 76

def setgid?
  !!(entry.mode & Fake::Entry::SETGID).nonzero?
end

#setuid?Boolean

Returns:

  • (Boolean)


80
81
82
# File 'lib/memfs/file/stat.rb', line 80

def setuid?
  !!(entry.mode & Fake::Entry::SETUID).nonzero?
end

#socket?Boolean

Returns:

  • (Boolean)


84
85
86
# File 'lib/memfs/file/stat.rb', line 84

def socket?
  false
end

#sticky?Boolean

Returns:

  • (Boolean)


88
89
90
# File 'lib/memfs/file/stat.rb', line 88

def sticky?
  !!(entry.mode & Fake::Entry::USTICK).nonzero?
end

#symlink?Boolean

Returns:

  • (Boolean)


92
93
94
# File 'lib/memfs/file/stat.rb', line 92

def symlink?
  entry.is_a?(Fake::Symlink)
end

#world_readable?Boolean

Returns:

  • (Boolean)


96
97
98
# File 'lib/memfs/file/stat.rb', line 96

def world_readable?
  entry.mode - 0100000 if (entry.mode & Fake::Entry::OREAD).nonzero?
end

#world_writable?Boolean

Returns:

  • (Boolean)


100
101
102
# File 'lib/memfs/file/stat.rb', line 100

def world_writable?
  entry.mode - 0100000 if (entry.mode & Fake::Entry::OWRITE).nonzero?
end

#writable?Boolean

Returns:

  • (Boolean)


104
105
106
# File 'lib/memfs/file/stat.rb', line 104

def writable?
  user_writable? || group_writable? || !!world_writable?
end

#writable_real?Boolean

Returns:

  • (Boolean)


108
109
110
# File 'lib/memfs/file/stat.rb', line 108

def writable_real?
  user_writable_real? || group_writable_real? || !!world_writable?
end

#zero?Boolean

Returns:

  • (Boolean)


112
113
114
# File 'lib/memfs/file/stat.rb', line 112

def zero?
  entry.content && entry.content.empty?
end