Sha256: 5482c43793d04e80c69cd64bddcef694d10e85ef7ac6697194e9fa039cd77018

Contents?: true

Size: 894 Bytes

Versions: 6

Compression:

Stored size: 894 Bytes

Contents

#!/usr/bin/env ruby

require 'rooted_tree'

# FileSystemItem
#
# Maps the entries in the file system to `Node` objects via .map_to_path. The
# Node#inspect method is then exploited in #display to show the resulting tree
# structure. The name of each entry in the filesystem is stored in the value
# field of the Node.

class FileSystemItem < RootedTree::Node
  def display
    inspect { |item| item.value }
  end
  
  def self.map_to_path path = '.', root: new(path)
    # Iterate over all of the files in the directory
    Dir[path + '/*'].each do |entry|
      # Create a new FileSystemItem for the entry
      item = new File.basename(entry)
      root << item
      # Continue to map the files and directories under
      # entry, if it is a directory
      map_to_path entry, root: item unless File.file? entry
    end
    
    root
  end
end

puts FileSystemItem.map_to_path('.').display

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rooted_tree-0.3.3 examples/filesystem_tree.rb
rooted_tree-0.3.2 examples/filesystem_tree.rb
rooted_tree-0.3.1 examples/filesystem_tree.rb
rooted_tree-0.3.0 examples/filesystem_tree.rb
rooted_tree-0.2.3 examples/filesystem_tree.rb
rooted_tree-0.2.2 examples/filesystem_tree.rb