gf-treevisitor 0.0.8 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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