FileUtils, a useful extension

C

Christophe Mckeon

i find these come in real handy, and thought they would be good for
inclusion into FileUtils or barring that, then maybe the guys at Facets
lib might be interested. they are based on Unix shell test options, i.e.
[ -d somedir ] etc.
it would be fairly trivial to implement the other test options as well.

module FileUtils

def b? path
File.blockdev? path
end

def c? path
File.chardev? path
end

def d? path
File.directory? path
end

def e? path
File.exists? path
end

def f? path
File.file? path
end

def x?
File.executable? path
end

end
 
T

Trans

i find these come in real handy, and thought they would be good for
inclusion into FileUtils or barring that, then maybe the guys at Facets
lib might be interested. they are based on Unix shell test options, i.e.
[ -d somedir ] etc.
it would be fairly trivial to implement the other test options as well.

module FileUtils

def b? path
File.blockdev? path
end

def c? path
File.chardev? path
end

def d? path
File.directory? path
end

def e? path
File.exists? path
end

def f? path
File.file? path
end

def x?
File.executable? path
end

Hmmm... you know about Kernel#test ? Eg.

test ?d, path

instead of

FileUtils.directory?(path)


$ ri Kernel#test

------------------------------------------------------------
Kernel#test
test(int_cmd, file1 [, file2] ) => obj
------------------------------------------------------------------------
Uses the integer <em>aCmd</em> to perform various tests on
<em>file1</em> (first table below) or on <em>file1</em> and
<em>file2</em> (second table).

File tests on a single file:

Test Returns Meaning
?A | Time | Last access time for file1
?b | boolean | True if file1 is a block device
?c | boolean | True if file1 is a character device
?C | Time | Last change time for file1
?d | boolean | True if file1 exists and is a directory
?e | boolean | True if file1 exists
?f | boolean | True if file1 exists and is a regular file
?g | boolean | True if file1 has the \CF{setgid} bit
| | set (false under NT)
?G | boolean | True if file1 exists and has a group
| | ownership equal to the caller's group
?k | boolean | True if file1 exists and has the sticky bit
set
?l | boolean | True if file1 exists and is a symbolic link
?M | Time | Last modification time for file1
?o | boolean | True if file1 exists and is owned by
| | the caller's effective uid
?O | boolean | True if file1 exists and is owned by
| | the caller's real uid
?p | boolean | True if file1 exists and is a fifo
?r | boolean | True if file1 is readable by the effective
| | uid/gid of the caller
?R | boolean | True if file is readable by the real
| | uid/gid of the caller
?s | int/nil | If file1 has nonzero size, return the size,
| | otherwise return nil
?S | boolean | True if file1 exists and is a socket
?u | boolean | True if file1 has the setuid bit set
?w | boolean | True if file1 exists and is writable by
| | the effective uid/gid
?W | boolean | True if file1 exists and is writable by
| | the real uid/gid
?x | boolean | True if file1 exists and is executable by
| | the effective uid/gid
?X | boolean | True if file1 exists and is executable by
| | the real uid/gid
?z | boolean | True if file1 exists and has a zero length

Tests that take two files:

?- | boolean | True if file1 and file2 are identical
?= | boolean | True if the modification times of file1
| | and file2 are equal
?< | boolean | True if the modification time of file1
| | is prior to that of file2
?> | boolean | True if the modification time of file1
| | is after that of file2

T.
 
J

John Joyce

i find these come in real handy, and thought they would be good for
inclusion into FileUtils or barring that, then maybe the guys at
Facets
lib might be interested. they are based on Unix shell test
options, i.e.
[ -d somedir ] etc.
it would be fairly trivial to implement the other test options as
well.

module FileUtils

def b? path
File.blockdev? path
end

def c? path
File.chardev? path
end

def d? path
File.directory? path
end

def e? path
File.exists? path
end

def f? path
File.file? path
end

def x?
File.executable? path
end

Hmmm... you know about Kernel#test ? Eg.

test ?d, path

instead of

FileUtils.directory?(path)


$ ri Kernel#test

------------------------------------------------------------
Kernel#test
test(int_cmd, file1 [, file2] ) => obj
----------------------------------------------------------------------
--
Uses the integer <em>aCmd</em> to perform various tests on
<em>file1</em> (first table below) or on <em>file1</em> and
<em>file2</em> (second table).

File tests on a single file:

Test Returns Meaning
?A | Time | Last access time for file1
?b | boolean | True if file1 is a block device
?c | boolean | True if file1 is a character device
?C | Time | Last change time for file1
?d | boolean | True if file1 exists and is a directory
?e | boolean | True if file1 exists
?f | boolean | True if file1 exists and is a regular file
?g | boolean | True if file1 has the \CF{setgid} bit
| | set (false under NT)
?G | boolean | True if file1 exists and has a group
| | ownership equal to the caller's group
?k | boolean | True if file1 exists and has the sticky bit
set
?l | boolean | True if file1 exists and is a symbolic link
?M | Time | Last modification time for file1
?o | boolean | True if file1 exists and is owned by
| | the caller's effective uid
?O | boolean | True if file1 exists and is owned by
| | the caller's real uid
?p | boolean | True if file1 exists and is a fifo
?r | boolean | True if file1 is readable by the effective
| | uid/gid of the caller
?R | boolean | True if file is readable by the real
| | uid/gid of the caller
?s | int/nil | If file1 has nonzero size, return the size,
| | otherwise return nil
?S | boolean | True if file1 exists and is a socket
?u | boolean | True if file1 has the setuid bit set
?w | boolean | True if file1 exists and is writable by
| | the effective uid/gid
?W | boolean | True if file1 exists and is writable by
| | the real uid/gid
?x | boolean | True if file1 exists and is executable by
| | the effective uid/gid
?X | boolean | True if file1 exists and is executable by
| | the real uid/gid
?z | boolean | True if file1 exists and has a zero length

Tests that take two files:

?- | boolean | True if file1 and file2 are identical
?= | boolean | True if the modification times of file1
| | and file2 are equal
?< | boolean | True if the modification time of file1
| | is prior to that of file2
?> | boolean | True if the modification time of file1
| | is after that of file2

T.
WOW!
I always found myself avoiding Kernel because its name reminds me of
the Linux Kernel, which I don't want to delve into.
That's amazing.
I'm almost shocked we've got so many file & directory tools when this
is there...
 
M

Michael Fellinger

i find these come in real handy, and thought they would be good for
inclusion into FileUtils or barring that, then maybe the guys at Facets
lib might be interested. they are based on Unix shell test options, i.e.
[ -d somedir ] etc.
it would be fairly trivial to implement the other test options as well.

module FileUtils

def b? path
File.blockdev? path
end

def c? path
File.chardev? path
end

def d? path
File.directory? path
end

def e? path
File.exists? path
end

def f? path
File.file? path
end

def x?
File.executable? path
end

Hmmm... you know about Kernel#test ? Eg.

test ?d, path

Anyone knows what happens with this in 1.9? AFAIK the ?d syntax is
going away... maybe symbols instead?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,774
Messages
2,569,599
Members
45,165
Latest member
JavierBrak
Top