class Scanner

Scanner class scan all directories of root array and return all children

Public Instance Methods

scan(path_array, directories, files, tree_data, root) click to toggle source
# File lib/tree/scanner.rb, line 7
def scan(path_array, directories, files, tree_data, root)
  folders_arr = []
  path_array.each do |i|
    if i.file?
      files += 1
      next
    else
      directories += 1
      begin
        i.each_child do |dir|
          folders_arr << dir
          tree_data << dir
          i = dir
        end
      rescue Errno::EACCES, Errno::ENOENT, Errno::ENOTDIR
        next
      end
    end
  end
  if folders_arr.empty?
    [tree_data, root, files, directories]
  else
    scan(folders_arr, directories, files, tree_data, root)
  end
end
scan_multithread(path_array, directories, files, tree_data, root) click to toggle source
# File lib/tree/scanner.rb, line 33
def scan_multithread(path_array, directories, files, tree_data, root)
  threads = []
  path_array.each do |n|
    threads << Thread.new do
      n.find do |v|
        next if v == n

        tree_data << v
        if v.file?
          files += 1
        else
          directories += 1
        end
      end
    end
  end
  threads.each(&:join)
  [tree_data, root, files, directories]
end