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

Version Path
gf-treevisitor-0.0.11 lib/treevisitor/visitors/build_dir_tree_visitor.rb
gf-treevisitor-0.0.12 lib/treevisitor/visitors/build_dir_tree_visitor.rb
gf-treevisitor-0.0.13 lib/treevisitor/visitors/build_dir_tree_visitor.rb
gf-treevisitor-0.0.15 lib/treevisitor/visitors/build_dir_tree_visitor.rb
gf-treevisitor-0.0.16 lib/treevisitor/visitors/build_dir_tree_visitor.rb
gf-treevisitor-0.0.18 lib/treevisitor/visitors/build_dir_tree_visitor.rb
gf-treevisitor-0.0.19 lib/treevisitor/visitors/build_dir_tree_visitor.rb