# Convenience methods for working with the filesystem. This class
# only provides static methods, to be used analogously to the File
# class (for example, File.directory?).
#
class Filesystem
# Return whether or not the given path begins with a dot (ASCII
# period).
#
# @param path [String] the path whose first character you want to check.
#
# @return [Boolean] whether or not *path* begins with an ASCII period.
#
def self.begins_with_dot?(path)
return (path[0..0] == '.')
end
# Get a list of all real subdirectories of the given directory.
#
# @param dir [String] the directory whose subdirectories you want.
#
# @return [Array] a list of subdirectories of *dir*, not
# including the pseudo-directories "." and ".." (the current/parent
# directories).
#
def self.get_subdirs(dir)
subdirs = []
return subdirs if not File.directory?(dir)
Dir.open(dir) do |d|
d.each do |entry|
relative_path = File.join(dir, entry)
if File.directory?(relative_path) and not self.begins_with_dot?(entry)
subdirs << entry
end
end
end
return subdirs
end
end