gf-treevisitor 0.0.6

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.
@@ -0,0 +1,35 @@
1
+ class PrintTreeNodeVisitor2 < TreeNodeVisitor
2
+
3
+ def initialize( *args )
4
+ super( *args )
5
+ @depth = 0
6
+ end
7
+
8
+ def visit_leafNode( leafNode )
9
+ str = ""
10
+ (0...@depth-1).step {
11
+ str << " |-"
12
+ }
13
+ str << " | "
14
+ puts str + leafNode.to_s
15
+ end
16
+
17
+ def enter_treeNode( treeNode )
18
+
19
+ str = ""
20
+ (0...@depth).step {
21
+ str << " |-"
22
+ }
23
+
24
+ if @depth == 0
25
+ puts str + treeNode.to_s
26
+ else
27
+ puts str + treeNode.to_s
28
+ end
29
+ @depth += 1
30
+ end
31
+
32
+ def exit_treeNode( treeNode )
33
+ @depth -= 1
34
+ end
35
+ end
@@ -0,0 +1,20 @@
1
+ require File.join( File.dirname(__FILE__), "test_helper")
2
+
3
+ require 'fileutils'
4
+ require 'gf_utility/kwartzhelper'
5
+
6
+ class TCDirProcessor < Test::Unit::TestCase
7
+
8
+ KWARTZ_TEST_DATA = File.join( $TREEVISITOR_HOME, "test_data", "gf_utility", "kwartz_test_data" )
9
+
10
+ def test_simple
11
+ template_dir = File.join( KWARTZ_TEST_DATA, "source" )
12
+ template_out = File.join( KWARTZ_TEST_DATA, "out" )
13
+ kwartz_compile( template_dir, nil, template_out )
14
+
15
+ out_filename = File.join( KWARTZ_TEST_DATA, "out", "test1.rb" )
16
+ assert File.exists?(out_filename)
17
+ FileUtils.rm out_filename
18
+ end
19
+
20
+ end
@@ -0,0 +1,14 @@
1
+ require File.join( File.dirname(__FILE__), "test_helper")
2
+
3
+ require 'gf_utility/md5.rb'
4
+
5
+ class TCMD5 < Test::Unit::TestCase
6
+
7
+ TEST_FILE = File.join( $TREEVISITOR_HOME, "lib", "treevisitor.rb" )
8
+
9
+ def test_simple_build
10
+ file_name = File.join( TEST_FILE )
11
+ MD5.file( file_name )
12
+ end
13
+
14
+ end
@@ -0,0 +1,13 @@
1
+ require File.join( File.dirname(__FILE__), "test_helper")
2
+
3
+ require 'gf_utility/numeric.rb'
4
+
5
+ class TCNumeric < Test::Unit::TestCase
6
+
7
+ def test_simple
8
+ assert_equal "10", 10.with_separator
9
+ assert_equal "10.0", 10.0.with_separator
10
+ assert_equal "1,000,000", 1000000.with_separator
11
+ end
12
+
13
+ end
@@ -0,0 +1,5 @@
1
+ require 'test/unit'
2
+
3
+ $TREEVISITOR_HOME = File.expand_path( File.join( File.dirname( __FILE__), "..", ".." ) )
4
+ $:.unshift( File.join($TREEVISITOR_HOME, "lib" ) )
5
+ $:.unshift( File.join($TREEVISITOR_HOME, "test" ) )
@@ -0,0 +1,10 @@
1
+ require File.join(File.dirname(__FILE__), "test_helper")
2
+
3
+ require 'treevisitor/dir_processor'
4
+
5
+ class TCDirProcessor < Test::Unit::TestCase
6
+ def test_simple
7
+ dp = DirProcessor.new($TEST_DATA) { |f| puts f }
8
+ dp.run
9
+ end
10
+ end
@@ -0,0 +1,30 @@
1
+ require File.join(File.dirname(__FILE__), "test_helper")
2
+
3
+ require 'treevisitor/dir_tree_walker.rb'
4
+ require 'treevisitor/tree_node_visitor.rb'
5
+
6
+ class TCDirTreeWalker < Test::Unit::TestCase
7
+
8
+ def test_simple
9
+ dir_tree_walker = DirTreeWalker.new( $TEST_DATA )
10
+ dir_tree_walker.add_ignore_dir( ".svn" )
11
+
12
+ accumulator = []
13
+ visitor = BlockTreeNodeVisitor.new { |pathname| accumulator << File.basename( pathname ) }
14
+ dir_tree_walker.run( visitor )
15
+ assert_equal( 7, accumulator.length )
16
+ assert_equal( %w{ test_data dir.1 dir.1.2 file.1.2.1 file.1.1 dir.2 file.2.1 }, accumulator )
17
+ end
18
+
19
+ def test_ignore_dir
20
+ dtp = DirTreeWalker.new( "." )
21
+
22
+ dtp.add_ignore_dir(".xvpics")
23
+ dtp.add_ignore_dir(".thumbnails")
24
+ dtp.add_ignore_dir("catalog_data")
25
+
26
+ assert( dtp.ignore_dir?( ".thumbnails" ) )
27
+ assert( ! dtp.ignore_dir?( "pippo" ) )
28
+ end
29
+
30
+ end
@@ -0,0 +1,129 @@
1
+ require File.join(File.dirname(__FILE__), "test_helper")
2
+
3
+ require 'treevisitor/tree_node.rb'
4
+
5
+ class TCTreeNode < Test::Unit::TestCase
6
+
7
+ def test_simple_build
8
+ ta = TreeNode.new( "a" )
9
+ assert( ta.root? )
10
+ ln1 = LeafNode.new("1", ta)
11
+ assert_equal( ta, ln1.parent )
12
+ ln2 = LeafNode.new("2", ta)
13
+ tb = TreeNode.new( "b", ta )
14
+ ln3 = LeafNode.new( "3", tb )
15
+ assert_equal( tb, ln3.parent )
16
+
17
+ # test depth
18
+ assert_equal( 2, tb.depth )
19
+ assert_equal( 3, ln3.depth )
20
+
21
+ # test nr_nodes
22
+ assert_equal( 1, tb.nr_nodes )
23
+ assert_equal( 4, ta.nr_nodes )
24
+
25
+ # puts ta.to_str
26
+ end
27
+
28
+ def test_add_methods
29
+ ta = TreeNode.new( "a" )
30
+ assert( ta.root? )
31
+
32
+ ln1 = LeafNode.new("1")
33
+ ta.add_leaf( ln1 )
34
+ assert_equal( ta, ln1.parent )
35
+
36
+ ln2 = LeafNode.new("2", ta)
37
+ ta.add_leaf( ln2 )
38
+
39
+ tb = TreeNode.new( "b", ta )
40
+ ln3 = LeafNode.new( "3", tb )
41
+ tb.add_leaf( ln3 )
42
+ assert_equal( tb, ln3.parent )
43
+
44
+ ta.add_child( tb )
45
+ # puts ta.to_str
46
+ end
47
+
48
+ def test_next_prev
49
+ ta = TreeNode.new( "a" )
50
+
51
+ ln1 = LeafNode.new("1", ta)
52
+ assert_nil( ln1.next )
53
+ assert_nil( ln1.prev )
54
+
55
+ ln2 = LeafNode.new("2", ta)
56
+ assert_equal( ln1, ln2.prev )
57
+ assert_nil( ln2.next )
58
+
59
+ ln3 = LeafNode.new("3", ta)
60
+ assert_equal( ln3, ln2.next )
61
+ end
62
+
63
+ def test_nr_methods
64
+ ta = TreeNode.new( "a" )
65
+ ln1 = LeafNode.new("1", ta)
66
+ ln2 = LeafNode.new("2", ta)
67
+ tb = TreeNode.new( "b", ta )
68
+ ln3 = LeafNode.new( "3", tb )
69
+
70
+ assert_equal( 4, ta.nr_nodes )
71
+ assert_equal( 3, ta.nr_leaves )
72
+ assert_equal( 1, ta.nr_childs )
73
+
74
+ assert_equal( 1, tb.nr_nodes )
75
+ assert_equal( 1, tb.nr_leaves )
76
+ assert_equal( 0, tb.nr_childs )
77
+ end
78
+
79
+ def test_prefix_path
80
+ ta = TreeNode.new( "a" )
81
+ ln1 = LeafNode.new("1", ta)
82
+ ln2 = LeafNode.new("2", ta)
83
+ tb = TreeNode.new( "b", ta )
84
+ ln3 = LeafNode.new( "3", tb )
85
+
86
+ assert_equal( "a", ta.path )
87
+ assert_equal( "a/b", tb.path )
88
+
89
+ ta.prefix_path= "<root>/"
90
+
91
+ assert_equal( "<root>/a", ta.path )
92
+ assert_equal( "<root>/a/b", tb.path )
93
+ end
94
+
95
+ def test_invalidate
96
+ ta = TreeNode.new( "a" )
97
+ ln1 = LeafNode.new("1", ta)
98
+ ln2 = LeafNode.new("2", ta)
99
+ tb = TreeNode.new( "b", ta )
100
+ ln3 = LeafNode.new( "3", tb )
101
+
102
+ #@path = nil
103
+ #@path_from_root = nil
104
+ #@depth = nil
105
+
106
+
107
+ assert_equal( "a/b", tb.path )
108
+ assert_equal( "/b", tb.path_from_root )
109
+ assert_equal( 2, tb.depth )
110
+
111
+ r = TreeNode.new( "r" )
112
+ r.add_child( ta )
113
+ assert_equal( "r/a/b", tb.path )
114
+ assert_equal( "/a/b", tb.path_from_root )
115
+ assert_equal( 3, tb.depth )
116
+ end
117
+
118
+ def test_find
119
+ ta = TreeNode.new( "a" )
120
+ ln1 = LeafNode.new("1", ta)
121
+ ln2 = LeafNode.new("2", ta)
122
+ tb = TreeNode.new( "b", ta )
123
+ ln3 = LeafNode.new( "3", tb )
124
+
125
+ assert_equal(ln3, ta.find( "3"))
126
+ assert_equal(tb, ta.find( "b"))
127
+ assert_nil( ta.find("not existent"))
128
+ end
129
+ end
@@ -0,0 +1,66 @@
1
+ require File.join(File.dirname(__FILE__), "test_helper")
2
+
3
+ require 'treevisitor/tree_node.rb'
4
+ require 'treevisitor/tree_node_visitor.rb'
5
+
6
+ class TCTreeNodeVisitor < Test::Unit::TestCase
7
+
8
+ def setup
9
+ ta = TreeNode.new( "a", nil )
10
+ LeafNode.new("1", ta )
11
+ LeafNode.new("2", ta )
12
+
13
+ tb = TreeNode.new( "b", ta )
14
+ LeafNode.new( "3", tb )
15
+
16
+ @tree = ta
17
+ end
18
+
19
+ def test_blocktreenodevisitor
20
+ accumulator = []
21
+ visitor = BlockTreeNodeVisitor.new { |node| accumulator << node.name}
22
+ @tree.accept( visitor )
23
+ assert_equal( 5, accumulator.length )
24
+ assert_equal( %w{ a 1 2 b 3 }, accumulator )
25
+ end
26
+
27
+ def test_depthtreenodevisitor
28
+ visitor = DepthTreeNodeVisitor.new
29
+ @tree.accept( visitor )
30
+ assert_equal( 0, visitor.depth )
31
+
32
+ visitor = CloneTreeNodeVisitor.new
33
+ @tree.accept( visitor )
34
+ assert_equal(@tree.nr_nodes, visitor.clonedRoot.nr_nodes )
35
+ end
36
+
37
+ def test_callback_tree_node_visitor
38
+ accumulator = []
39
+ visitor = CallbackTreeNodeVisitor.new
40
+ visitor.onEnterTreeNode{ |treeNode| accumulator << treeNode.name }
41
+ visitor.onVisitLeafNode{ |leafNode| accumulator << leafNode.name }
42
+ @tree.accept( visitor )
43
+ assert_equal( 5, accumulator.length )
44
+ assert_equal( %w{ a 1 2 b 3 }, accumulator )
45
+ end
46
+
47
+ def test_callback_tree_node_visitor2
48
+ visitor = CallbackTreeNodeVisitor2.new
49
+ visitor.onEnterTreeNode{ |treeNode, newParentNode|
50
+ TreeNode.new("n" + treeNode.name, newParentNode)
51
+ }
52
+ visitor.onVisitLeafNode{ |leafNode, newParentNode|
53
+ LeafNode.new( "n" + leafNode.name, newParentNode )
54
+ }
55
+ @tree.accept( visitor )
56
+ newRoot = visitor.root
57
+ assert_equal( "n" + @tree.name, newRoot.name)
58
+
59
+ accumulator = []
60
+ visitor = BlockTreeNodeVisitor.new { |node| accumulator << node.name}
61
+ newRoot.accept( visitor )
62
+ assert_equal( 5, accumulator.length )
63
+ assert_equal( %w{ na n1 n2 nb n3 }, accumulator )
64
+ end
65
+
66
+ end
@@ -0,0 +1,10 @@
1
+ $TREEVISITOR_HOME = File.expand_path( File.join( File.dirname( __FILE__), "..", ".." ) )
2
+
3
+ lib_dir = File.join($TREEVISITOR_HOME, "lib" )
4
+ test_dir = File.join($TREEVISITOR_HOME, "test" )
5
+ $:.unshift lib_dir unless $:.include?(lib_dir)
6
+ $:.unshift test_dir unless $:.include?(test_dir)
7
+
8
+ $TEST_DATA = File.join( $TREEVISITOR_HOME, "test_data", "tree_visitor", "test_data" )
9
+
10
+ require 'test/unit'
@@ -0,0 +1,16 @@
1
+ # stdlib
2
+ require "test/unit"
3
+
4
+ # common
5
+ $TREEVISITOR_HOME = File.expand_path( File.join( File.dirname( __FILE__), "..") )
6
+ $:.unshift( File.join($TREEVISITOR_HOME, "lib" ) )
7
+ $:.unshift( File.join($TREEVISITOR_HOME, "test" ) )
8
+
9
+ require "tree_visitor"
10
+
11
+ require "gf_utility/tc_md5"
12
+
13
+ require "treevisitor/tc_dir_processor"
14
+ require "treevisitor/tc_dir_tree_walker"
15
+ require "treevisitor/tc_tree_node"
16
+ require "treevisitor/tc_tree_node_visitor"
@@ -0,0 +1,5 @@
1
+ <table>
2
+ <tr id="list1">
3
+ <td id="mark:item1">foo</td>
4
+ </tr>
5
+ </table>
File without changes
File without changes
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gf-treevisitor
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.6
5
+ platform: ruby
6
+ authors:
7
+ - gf
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-05-27 00:00:00 -07:00
13
+ default_executable: dirtree.rb
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: abstract
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ description:
26
+ email: giovanni.ferro@gmail.com
27
+ executables:
28
+ - dirtree.rb
29
+ extensions: []
30
+
31
+ extra_rdoc_files:
32
+ - LICENSE
33
+ - README.rdoc
34
+ files:
35
+ - lib/gf_utility/file_utilities.rb
36
+ - lib/gf_utility/kwartzhelper.rb
37
+ - lib/gf_utility/md5.rb
38
+ - lib/gf_utility/numeric.rb
39
+ - lib/treevisitor.rb
40
+ - lib/treevisitor/abs_node.rb
41
+ - lib/treevisitor/build_dir_tree_visitor.rb
42
+ - lib/treevisitor/cli/cli_dir_tree.rb
43
+ - lib/treevisitor/dir_processor.rb
44
+ - lib/treevisitor/dir_tree_walker.rb
45
+ - lib/treevisitor/leaf_node.rb
46
+ - lib/treevisitor/tree_node.rb
47
+ - lib/treevisitor/tree_node_visitor.rb
48
+ - lib/treevisitor/visitor/print_node_visitor2.rb
49
+ - test_data/gf_utility/kwartz_test_data/source/test1.html
50
+ - test_data/tree_visitor/test_data/dir.1/dir.1.2/file.1.2.1
51
+ - test_data/tree_visitor/test_data/dir.1/file.1.1
52
+ - test_data/tree_visitor/test_data/dir.2/file.2.1
53
+ - LICENSE
54
+ - README.rdoc
55
+ has_rdoc: true
56
+ homepage: http://github.com/gf/treevisitor
57
+ post_install_message:
58
+ rdoc_options:
59
+ - --charset=UTF-8
60
+ require_paths:
61
+ - lib
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: "0"
67
+ version:
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: "0"
73
+ version:
74
+ requirements: []
75
+
76
+ rubyforge_project: treevisitor
77
+ rubygems_version: 1.2.0
78
+ signing_key:
79
+ specification_version: 2
80
+ summary: implementation of visitor design pattern
81
+ test_files:
82
+ - test/treevisitor/tc_dir_processor.rb
83
+ - test/treevisitor/tc_dir_tree_walker.rb
84
+ - test/treevisitor/tc_tree_node.rb
85
+ - test/treevisitor/tc_tree_node_visitor.rb
86
+ - test/treevisitor/test_helper.rb
87
+ - test/gf_utility/tc_md5.rb
88
+ - test/gf_utility/tc_kwartz.rb
89
+ - test/gf_utility/tc_numeric.rb
90
+ - test/gf_utility/test_helper.rb
91
+ - test/ts_treevisitor.rb