Class: MemFs::File::Stat
- Inherits:
-
Object
- Object
- MemFs::File::Stat
- Extended by:
- Forwardable
- Includes:
- MemFs::FilesystemAccess
- Defined in:
- lib/memfs/file/stat.rb
Instance Attribute Summary collapse
-
#entry ⇒ Object
readonly
Returns the value of attribute entry.
Instance Method Summary collapse
- #blockdev? ⇒ Boolean
- #chardev? ⇒ Boolean
- #directory? ⇒ Boolean
- #executable? ⇒ Boolean
- #executable_real? ⇒ Boolean
- #file? ⇒ Boolean
- #ftype ⇒ Object
- #grpowned? ⇒ Boolean
-
#initialize(path, dereference: false) ⇒ Stat
constructor
A new instance of Stat.
- #nlink ⇒ Object
- #owned? ⇒ Boolean
- #pipe? ⇒ Boolean
- #readable? ⇒ Boolean
- #readable_real? ⇒ Boolean
- #setgid? ⇒ Boolean
- #setuid? ⇒ Boolean
- #socket? ⇒ Boolean
- #sticky? ⇒ Boolean
- #symlink? ⇒ Boolean
- #world_readable? ⇒ Boolean
- #world_writable? ⇒ Boolean
- #writable? ⇒ Boolean
- #writable_real? ⇒ Boolean
- #zero? ⇒ Boolean
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
#entry ⇒ Object (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
26 27 28 |
# File 'lib/memfs/file/stat.rb', line 26 def blockdev? !!entry.block_device end |
#chardev? ⇒ Boolean
30 31 32 |
# File 'lib/memfs/file/stat.rb', line 30 def chardev? !!entry.character_device end |
#directory? ⇒ Boolean
34 35 36 |
# File 'lib/memfs/file/stat.rb', line 34 def directory? entry.is_a?(Fake::Directory) end |
#executable? ⇒ Boolean
38 39 40 |
# File 'lib/memfs/file/stat.rb', line 38 def executable? user_executable? || group_executable? || !!world_executable? end |
#executable_real? ⇒ 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
46 47 48 |
# File 'lib/memfs/file/stat.rb', line 46 def file? entry.is_a?(Fake::File) end |
#ftype ⇒ Object
50 51 52 |
# File 'lib/memfs/file/stat.rb', line 50 def ftype entry.type end |
#grpowned? ⇒ Boolean
54 55 56 |
# File 'lib/memfs/file/stat.rb', line 54 def grpowned? gid == Process.egid end |
#nlink ⇒ Object
63 64 65 |
# File 'lib/memfs/file/stat.rb', line 63 def nlink directory? ? 2 : 1 end |
#owned? ⇒ Boolean
67 68 69 |
# File 'lib/memfs/file/stat.rb', line 67 def owned? uid == Process.euid end |
#pipe? ⇒ Boolean
71 72 73 |
# File 'lib/memfs/file/stat.rb', line 71 def pipe? false end |
#readable? ⇒ Boolean
75 76 77 |
# File 'lib/memfs/file/stat.rb', line 75 def readable? user_readable? || group_readable? || !!world_readable? end |
#readable_real? ⇒ 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
83 84 85 |
# File 'lib/memfs/file/stat.rb', line 83 def setgid? !!(entry.mode & Fake::Entry::SETGID).nonzero? end |
#setuid? ⇒ Boolean
87 88 89 |
# File 'lib/memfs/file/stat.rb', line 87 def setuid? !!(entry.mode & Fake::Entry::SETUID).nonzero? end |
#socket? ⇒ Boolean
91 92 93 |
# File 'lib/memfs/file/stat.rb', line 91 def socket? false end |
#sticky? ⇒ Boolean
95 96 97 |
# File 'lib/memfs/file/stat.rb', line 95 def sticky? !!(entry.mode & Fake::Entry::USTICK).nonzero? end |
#symlink? ⇒ Boolean
99 100 101 |
# File 'lib/memfs/file/stat.rb', line 99 def symlink? entry.is_a?(Fake::Symlink) end |
#world_readable? ⇒ 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
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
111 112 113 |
# File 'lib/memfs/file/stat.rb', line 111 def writable? user_writable? || group_writable? || !!world_writable? end |
#writable_real? ⇒ 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
119 120 121 |
# File 'lib/memfs/file/stat.rb', line 119 def zero? !!(entry.content && entry.content.empty?) end |