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

Constructor Details

#initialize(path, dereference: false) ⇒ Stat

Returns a new instance of Stat.



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

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.



12
13
14
# File 'lib/memfs/file/stat.rb', line 12

def entry
  @entry
end

Instance Method Details

#blockdev?Boolean

Returns:

  • (Boolean)


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

def blockdev?
  !!entry.block_device
end

#chardev?Boolean

Returns:

  • (Boolean)


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

def chardev?
  !!entry.character_device
end

#directory?Boolean

Returns:

  • (Boolean)


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

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

#executable?Boolean

Returns:

  • (Boolean)


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

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

#executable_real?Boolean

Returns:

  • (Boolean)


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

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

#file?Boolean

Returns:

  • (Boolean)


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

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

#ftypeObject



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

def ftype
  entry.type
end

#grpowned?Boolean

Returns:

  • (Boolean)


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

def grpowned?
  gid == Process.egid
end


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

def nlink
  directory? ? 2 : 1
end

#owned?Boolean

Returns:

  • (Boolean)


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

def owned?
  uid == Process.euid
end

#pipe?Boolean

Returns:

  • (Boolean)


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

def pipe?
  false
end

#readable?Boolean

Returns:

  • (Boolean)


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

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

#readable_real?Boolean

Returns:

  • (Boolean)


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

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

#setgid?Boolean

Returns:

  • (Boolean)


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

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

#setuid?Boolean

Returns:

  • (Boolean)


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

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

#socket?Boolean

Returns:

  • (Boolean)


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

def socket?
  false
end

#sticky?Boolean

Returns:

  • (Boolean)


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

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

#symlink?Boolean

Returns:

  • (Boolean)


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

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

#world_readable?Boolean

Returns:

  • (Boolean)


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

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

#world_writable?Boolean

Returns:

  • (Boolean)


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

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

#writable?Boolean

Returns:

  • (Boolean)


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

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

#writable_real?Boolean

Returns:

  • (Boolean)


115
116
117
# File 'lib/memfs/file/stat.rb', line 115

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

#zero?Boolean

Returns:

  • (Boolean)


119
120
121
# File 'lib/memfs/file/stat.rb', line 119

def zero?
  !!(entry.content && entry.content.empty?)
end