Sha256: 5646a522a110f6ff6f69500913245f1104b500f2e83abf7c771cf55da3b51dd9
Contents?: true
Size: 972 Bytes
Versions: 7
Compression:
Stored size: 972 Bytes
Contents
require 'treevisitor/tree_node' require 'treevisitor/dir_tree_walker' require 'treevisitor/tree_node_visitor' # # Buils a TreeNode from a filesystem directory # It similar to CloneTreeNodeVisitor # class BuildDirTreeVisitor < TreeNodeVisitor attr_reader :root attr_reader :nr_directories attr_reader :nr_files def initialize super @root = nil @stack = [] @nr_directories = 0 @nr_files = 0 end def enter_tree_node( pathname ) if @stack.empty? tree_node = TreeNode.new( File.basename( pathname ) ) @root = tree_node else tree_node = TreeNode.new( File.basename( pathname ), @stack.last ) end @nr_directories += 1 @stack.push( tree_node ) end def exit_tree_node( pathname ) @stack.pop end def visit_leaf_node( pathname ) @nr_files += 1 # connect the leaf_node created to the last tree_node on the stack LeafNode.new( File.basename(pathname), @stack.last ) end end
Version data entries
7 entries across 7 versions & 1 rubygems