]> gitweb.michael.orlitzky.com - mailshears.git/blobdiff - lib/common/filesystem.rb
Document everything with YARD and fix some bugs along the way.
[mailshears.git] / lib / common / filesystem.rb
index 72ff901dd1e0dc602369c6a795a13d0164ab30d5..0c80b59e55f98488a118faf5251e8b1a372af551 100644 (file)
@@ -1,16 +1,37 @@
+# Convenience methods for working with the filesystem. This class
+# only provides static methods, to be used analogously to the File
+# class (for example, <tt>File.directory?</tt>).
+#
 class Filesystem
 
 class Filesystem
 
-  def self.begins_with_dot(path)
+  # 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
 
     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<String>] a list of subdirectories of *dir*, not
+  #   including the pseudo-directories "." and ".." (the current/parent
+  #   directories).
+  #
   def self.get_subdirs(dir)
     subdirs = []
   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)
 
     Dir.open(dir) do |d|
       d.each do |entry|
         relative_path = File.join(dir, entry)
-        if (File.directory?(relative_path) and not begins_with_dot(entry))
+        if File.directory?(relative_path) and not self.begins_with_dot?(entry)
           subdirs << entry
         end
       end
           subdirs << entry
         end
       end