gf-treevisitor 0.0.8 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,46 +1,44 @@
1
- # common
2
- require 'treevisitor/tree_node'
3
- require 'treevisitor/dir_tree_walker'
4
- require 'treevisitor/tree_node_visitor'
5
-
6
- #
7
- # costruisce una albero TreeNode a partire dalla struttura
8
- # della directory, simile a clona
9
- # Clona un TreeNode
10
- #
11
- class BuildDirTreeVisitor < TreeNodeVisitor
12
-
13
- attr_reader :root
14
-
15
- attr_reader :nr_directories
16
- attr_reader :nr_files
17
-
18
- def initialize
19
- super
20
- @root = nil
21
- @stack = []
22
- @nr_directories = 0
23
- @nr_files = 0
24
- end
25
-
26
- def enter_treeNode( pathname )
27
- if @stack.empty?
28
- treeNode = TreeNode.new( File.basename( pathname ) )
29
- @root = treeNode
30
- else
31
- treeNode = TreeNode.new( File.basename( pathname ), @stack.last )
32
- end
33
- @nr_directories += 1
34
- @stack.push( treeNode )
35
- end
36
-
37
- def exit_treeNode( pathname )
38
- @stack.pop
39
- end
40
-
41
- def visit_leafNode( pathname )
42
- @nr_files += 1
43
- leafNode = LeafNode.new( File.basename(pathname), @stack.last )
44
- end
45
-
46
- end
1
+ require 'treevisitor/tree_node'
2
+ require 'treevisitor/dir_tree_walker'
3
+ require 'treevisitor/tree_node_visitor'
4
+
5
+ #
6
+ # Buils a TreeNode from a filesystem directory
7
+ # It similar to CloneTreeNodeVisitor
8
+ #
9
+ class BuildDirTreeVisitor < TreeNodeVisitor
10
+
11
+ attr_reader :root
12
+
13
+ attr_reader :nr_directories
14
+ attr_reader :nr_files
15
+
16
+ def initialize
17
+ super
18
+ @root = nil
19
+ @stack = []
20
+ @nr_directories = 0
21
+ @nr_files = 0
22
+ end
23
+
24
+ def enter_tree_node( pathname )
25
+ if @stack.empty?
26
+ treeNode = TreeNode.new( File.basename( pathname ) )
27
+ @root = treeNode
28
+ else
29
+ treeNode = TreeNode.new( File.basename( pathname ), @stack.last )
30
+ end
31
+ @nr_directories += 1
32
+ @stack.push( treeNode )
33
+ end
34
+
35
+ def exit_tree_node( pathname )
36
+ @stack.pop
37
+ end
38
+
39
+ def visit_leaf_node( pathname )
40
+ @nr_files += 1
41
+ leafNode = LeafNode.new( File.basename(pathname), @stack.last )
42
+ end
43
+
44
+ end
@@ -1,5 +1,7 @@
1
1
  #
2
- # CallbackTreeNodeVisitor
2
+ # Executes a block when enter in a node
3
+ # The block are defined from on_enter_X methods
4
+ # The blocks take as argument only the node
3
5
  #
4
6
  class CallbackTreeNodeVisitor < TreeNodeVisitor
5
7
 
@@ -20,7 +22,7 @@ class CallbackTreeNodeVisitor < TreeNodeVisitor
20
22
  @action_visitLeafNode = action
21
23
  end
22
24
 
23
- def enter_treeNode( treeNode )
25
+ def enter_tree_node( treeNode )
24
26
  parentNode = if @stack.empty?
25
27
  nil
26
28
  else
@@ -31,11 +33,11 @@ class CallbackTreeNodeVisitor < TreeNodeVisitor
31
33
  @action_enterTreeNode.call( treeNode ) if @action_enterTreeNode
32
34
  end
33
35
 
34
- def exit_treeNode( treeNode )
36
+ def exit_tree_node( treeNode )
35
37
  @stack.pop
36
38
  end
37
39
 
38
- def visit_leafNode( leafNode )
40
+ def visit_leaf_node( leafNode )
39
41
  parentNode = @stack.last
40
42
  @action_visitLeafNode.call( leafNode ) if @action_visitLeafNode
41
43
  end
@@ -1,6 +1,8 @@
1
1
 
2
2
  #
3
- # CallbackTreeNodeVisitor
3
+ # Executes a block when enter in a node
4
+ # The block are defined from on_enter_X methods
5
+ # The blocks take as argument the node and the parent_node
4
6
  #
5
7
  class CallbackTreeNodeVisitor2 < TreeNodeVisitor
6
8
 
@@ -21,7 +23,7 @@ class CallbackTreeNodeVisitor2 < TreeNodeVisitor
21
23
  @action_visitLeafNode = action
22
24
  end
23
25
 
24
- def enter_treeNode( treeNode )
26
+ def enter_tree_node( treeNode )
25
27
  newParentNode = if @stack.empty?
26
28
  nil
27
29
  else
@@ -32,11 +34,11 @@ class CallbackTreeNodeVisitor2 < TreeNodeVisitor
32
34
  @stack.push( newTreeNode )
33
35
  end
34
36
 
35
- def exit_treeNode( treeNode )
37
+ def exit_tree_node( treeNode )
36
38
  @stack.pop
37
39
  end
38
40
 
39
- def visit_leafNode( leafNode )
41
+ def visit_leaf_node( leafNode )
40
42
  newParentNode = @stack.last
41
43
  @action_visitLeafNode.call( leafNode, newParentNode )
42
44
  end
@@ -1,6 +1,5 @@
1
1
  #
2
- # Esempio
3
- # Clona un TreeNode
2
+ # Clone a tree_node
4
3
  #
5
4
  class CloneTreeNodeVisitor < TreeNodeVisitor
6
5
 
@@ -12,7 +11,7 @@ class CloneTreeNodeVisitor < TreeNodeVisitor
12
11
  @stack = []
13
12
  end
14
13
 
15
- def enter_treeNode( treeNode )
14
+ def enter_tree_node( treeNode )
16
15
  if @stack.empty?
17
16
  clonedTreeNode = TreeNode.new( treeNode.name )
18
17
  @clonedRoot = clonedTreeNode
@@ -22,11 +21,11 @@ class CloneTreeNodeVisitor < TreeNodeVisitor
22
21
  @stack.push( clonedTreeNode )
23
22
  end
24
23
 
25
- def exit_treeNode( treeNode )
24
+ def exit_tree_node( treeNode )
26
25
  @stack.pop
27
26
  end
28
27
 
29
- def visit_leafNode( leafNode )
28
+ def visit_leaf_node( leafNode )
30
29
  clonedLeafNode = LeafNode.new( leafNode.name, @stack.last )
31
30
  end
32
31
 
@@ -1,5 +1,5 @@
1
1
  #
2
- #
2
+ # Simple visitor: show how calculate the depth of a tree
3
3
  #
4
4
  class DepthTreeNodeVisitor < TreeNodeVisitor
5
5
 
@@ -10,15 +10,15 @@ class DepthTreeNodeVisitor < TreeNodeVisitor
10
10
  @depth = 0
11
11
  end
12
12
 
13
- def enter_treeNode( treeNode )
13
+ def enter_tree_node( treeNode )
14
14
  @depth += 1
15
15
  end
16
16
 
17
- def exit_treeNode( treeNode )
17
+ def exit_tree_node( treeNode )
18
18
  @depth -= 1
19
19
  end
20
20
 
21
- def visit_leafNode( leafNode )
21
+ def visit_leaf_node( leafNode )
22
22
  end
23
23
 
24
24
  end
@@ -1,17 +1,16 @@
1
1
  #
2
- # Utilizzo della classa astratta DirTreeProcessor
3
- # per stampare i nodi di un TreeNode
2
+ # Print for every node the name
4
3
  #
5
4
  class FlatPrintTreeNodeVisitor < TreeNodeVisitor
6
5
 
7
- def enter_treeNode( treeNode )
6
+ def enter_tree_node( treeNode )
8
7
  puts treeNode.name
9
8
  end
10
9
 
11
- def exit_treeNode( treeNode )
10
+ def exit_tree_node( treeNode )
12
11
  end
13
12
 
14
- def visit_leafNode( leafNode )
13
+ def visit_leaf_node( leafNode )
15
14
  puts leafNode.name
16
15
  end
17
16
 
@@ -1,17 +1,17 @@
1
1
  #
2
- # Utilizzo della classa astratta DirTreeProcessor
3
- # per stampare i nodi di un TreeNode
4
- #
2
+ # Visitor for DirTreeWalker
3
+ # Prints the node at enter
4
+ # TODO: join this con PrintTreeNodeVisitor
5
5
  class PrintDirTreeVisitor < TreeNodeVisitor
6
6
 
7
- def enter_treeNode( pathname )
7
+ def enter_tree_node( pathname )
8
8
  puts pathname
9
9
  end
10
10
 
11
- def exit_treeNode( treeNode )
11
+ def exit_tree_node( treeNode )
12
12
  end
13
13
 
14
- def visit_leafNode( pathname )
14
+ def visit_leaf_node( pathname )
15
15
  puts pathname
16
16
  end
17
17
 
@@ -1,3 +1,6 @@
1
+ #
2
+ # Prints TreeNode names indenting according to depth
3
+ #
1
4
  class PrintTreeNodeVisitor < TreeNodeVisitor
2
5
 
3
6
  def initialize( *args )
@@ -5,7 +8,7 @@ class PrintTreeNodeVisitor < TreeNodeVisitor
5
8
  @depth = 0
6
9
  end
7
10
 
8
- def visit_leafNode( leafNode )
11
+ def visit_leaf_node( leafNode )
9
12
  str = ""
10
13
  (0...@depth-1).step {
11
14
  str << " |-"
@@ -14,7 +17,7 @@ class PrintTreeNodeVisitor < TreeNodeVisitor
14
17
  puts str + leafNode.name.to_s
15
18
  end
16
19
 
17
- def enter_treeNode( treeNode )
20
+ def enter_tree_node( treeNode )
18
21
 
19
22
  str = ""
20
23
  (0...@depth).step {
@@ -29,7 +32,7 @@ class PrintTreeNodeVisitor < TreeNodeVisitor
29
32
  @depth += 1
30
33
  end
31
34
 
32
- def exit_treeNode( treeNode )
35
+ def exit_tree_node( treeNode )
33
36
  @depth -= 1
34
37
  end
35
38
  end
@@ -1,3 +1,6 @@
1
+ #
2
+ # Prints node using "to_s" instead of name
3
+ # TODO: join this with PrintTreeNodeVisitor
1
4
  class PrintTreeNodeVisitor2 < TreeNodeVisitor
2
5
 
3
6
  def initialize( *args )
@@ -5,16 +8,16 @@ class PrintTreeNodeVisitor2 < TreeNodeVisitor
5
8
  @depth = 0
6
9
  end
7
10
 
8
- def visit_leafNode( leafNode )
11
+ def visit_leaf_node( leaf_node )
9
12
  str = ""
10
13
  (0...@depth-1).step {
11
14
  str << " |-"
12
15
  }
13
16
  str << " | "
14
- puts str + leafNode.to_s
17
+ puts str + leaf_node.to_s
15
18
  end
16
19
 
17
- def enter_treeNode( treeNode )
20
+ def enter_tree_node( tree_node )
18
21
 
19
22
  str = ""
20
23
  (0...@depth).step {
@@ -22,14 +25,14 @@ class PrintTreeNodeVisitor2 < TreeNodeVisitor
22
25
  }
23
26
 
24
27
  if @depth == 0
25
- puts str + treeNode.to_s
28
+ puts str + tree_node.to_s
26
29
  else
27
- puts str + treeNode.to_s
30
+ puts str + tree_node.to_s
28
31
  end
29
32
  @depth += 1
30
33
  end
31
34
 
32
- def exit_treeNode( treeNode )
35
+ def exit_tree_node( tree_node )
33
36
  @depth -= 1
34
37
  end
35
38
  end
data/lib/treevisitor.rb CHANGED
@@ -1,3 +1,3 @@
1
- class TreeVisitor
2
- VERSION = '0.0.8'
3
- end
1
+ class TreeVisitor
2
+ VERSION = '0.0.10'
3
+ end
@@ -1,14 +1,14 @@
1
- require File.join( File.dirname(__FILE__), "test_helper")
2
-
3
- require 'gf_utilities/md5.rb'
4
-
5
- class TCMD5 < Test::Unit::TestCase
6
-
7
- TEST_FILE = File.join( $TREEVISITOR_HOME, "lib", "gf_utilities", "md5.rb" )
8
-
9
- def test_simple_md5
10
- file_name = File.join( TEST_FILE )
11
- assert_equal "0cac752fb36269471d8265435ed99443", MD5.file( file_name ).to_s
12
- end
13
-
14
- end
1
+ require File.join( File.dirname(__FILE__), "test_helper")
2
+
3
+ require 'gf_utilities/md5.rb'
4
+
5
+ class TCMD5 < Test::Unit::TestCase
6
+
7
+ TEST_FILE = File.join( $TREEVISITOR_HOME, "lib", "gf_utilities", "md5.rb" )
8
+
9
+ def test_simple_md5
10
+ file_name = File.join( TEST_FILE )
11
+ assert_equal "8777d9d35da17496e21dcc8a4f9f8191", MD5.file( file_name ).to_s
12
+ end
13
+
14
+ end
@@ -11,7 +11,7 @@ class TCCliTree < Test::Unit::TestCase
11
11
  args = %w{-h}
12
12
  CliTree.new.parse_args(args)
13
13
  end
14
- assert out.start_with?("Usage:")
14
+ assert_match /Usage:/, out
15
15
  end
16
16
 
17
17
  def test_version
@@ -8,8 +8,8 @@ class TCDirProcessor < Test::Unit::TestCase
8
8
 
9
9
  def test_simple
10
10
  files = []
11
- dp = DirProcessor.new(TEST_DATA) { |f| files << f }
12
- dp.run
11
+ dp = DirProcessor.new { |f| files << f }
12
+ dp.process(TEST_DATA)
13
13
  assert_equal 3, files.length
14
14
  end
15
15
  end
@@ -7,8 +7,11 @@ class TCTreeNode < Test::Unit::TestCase
7
7
  def test_simple_build
8
8
  ta = TreeNode.new( "a" )
9
9
  assert( ta.root? )
10
+
10
11
  ln1 = LeafNode.new("1", ta)
11
12
  assert_equal( ta, ln1.parent )
13
+ assert !ln1.root?
14
+
12
15
  ln2 = LeafNode.new("2", ta)
13
16
  tb = TreeNode.new( "b", ta )
14
17
  ln3 = LeafNode.new( "3", tb )
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gf-treevisitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - gf
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-30 00:00:00 -07:00
12
+ date: 2009-06-02 00:00:00 -07:00
13
13
  default_executable: tree.rb
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -22,7 +22,7 @@ dependencies:
22
22
  - !ruby/object:Gem::Version
23
23
  version: "0"
24
24
  version:
25
- description:
25
+ description: Implementation of visitor design pattern. It contains a 'tree.rb' command line clone of the tree unix tool.
26
26
  email: giovanni.ferro@gmail.com
27
27
  executables:
28
28
  - tree.rb
@@ -53,8 +53,8 @@ files:
53
53
  - lib/treevisitor/visitors/depth_tree_node_visitor.rb
54
54
  - lib/treevisitor/visitors/flat_print_tree_node_visitors.rb
55
55
  - lib/treevisitor/visitors/print_dir_tree_visitor.rb
56
- - lib/treevisitor/visitors/print_node_visitor2.rb
57
56
  - lib/treevisitor/visitors/print_tree_node_visitor.rb
57
+ - lib/treevisitor/visitors/print_tree_node_visitor2.rb
58
58
  - test_data/gf_utility/kwartz_test_data/out.certified/dummy.txt
59
59
  - test_data/gf_utility/kwartz_test_data/out/dummy.txt
60
60
  - test_data/gf_utility/kwartz_test_data/source/test1.html
@@ -90,7 +90,7 @@ rubyforge_project: treevisitor
90
90
  rubygems_version: 1.2.0
91
91
  signing_key:
92
92
  specification_version: 3
93
- summary: implementation of visitor design pattern
93
+ summary: Implementation of visitor design pattern
94
94
  test_files:
95
95
  - test/treevisitor/tc_dir_processor.rb
96
96
  - test/treevisitor/cli/tc_cli_tree.rb