treevisitor 0.1.5 → 0.1.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.
Files changed (51) hide show
  1. data/README.md +104 -0
  2. data/VERSION.yml +1 -1
  3. data/examples/{directory_without_subdirectory.rb → directory_walker/directory_without_subdirectory.rb} +6 -4
  4. data/examples/{find_files.rb → directory_walker/find_files.rb} +4 -3
  5. data/examples/{print_files.rb → directory_walker/print_files.rb} +5 -8
  6. data/examples/protovis/directory_to_json_visitor.rb +13 -0
  7. data/examples/protovis/index.html +87 -0
  8. data/examples/protovis/protovis-d3.2.js +15269 -0
  9. data/examples/protovis/treevisitor.js +33 -0
  10. data/examples/protovis/treevisitor.png +0 -0
  11. data/lib/treevisitor/basic_tree_node_visitor.rb +29 -0
  12. data/lib/treevisitor/cli/cli_tree.rb +43 -35
  13. data/lib/treevisitor/directory_walker.rb +260 -0
  14. data/lib/treevisitor/tree_node_visitor.rb +33 -5
  15. data/lib/treevisitor/{dir_processor.rb → util/dir_processor.rb} +0 -0
  16. data/lib/treevisitor/visitors/block_tree_node_visitor.rb +1 -1
  17. data/lib/treevisitor/visitors/build_dir_tree_visitor.rb +1 -1
  18. data/lib/treevisitor/visitors/callback_tree_node_visitor.rb +1 -2
  19. data/lib/treevisitor/visitors/callback_tree_node_visitor2.rb +1 -1
  20. data/lib/treevisitor/visitors/clone_tree_node_visitor.rb +1 -1
  21. data/lib/treevisitor/visitors/depth_tree_node_visitor.rb +1 -1
  22. data/lib/treevisitor/visitors/directory_to_hash_visitor.rb +33 -0
  23. data/lib/treevisitor/visitors/flat_print_tree_node_visitors.rb +1 -1
  24. data/lib/treevisitor/visitors/print_dir_tree_visitor.rb +1 -1
  25. data/lib/treevisitor/visitors/print_tree_node_visitor.rb +1 -1
  26. data/lib/treevisitor.rb +24 -8
  27. data/spec/fixtures/{test_dir → test_dir_1}/.dir_with_dot/dummy.txt +0 -0
  28. data/spec/fixtures/{test_dir → test_dir_1}/dir.1/dir.1.2/file.1.2.1 +0 -0
  29. data/spec/fixtures/{test_dir → test_dir_1}/dir.1/file.1.1 +0 -0
  30. data/spec/fixtures/{test_dir → test_dir_1}/dir.2/file.2.1 +0 -0
  31. data/spec/spec_helper.rb +6 -9
  32. data/spec/treevisitor/cli/cli_tree_spec.rb +5 -5
  33. data/spec/treevisitor/directory_walker_spec.rb +61 -0
  34. data/spec/treevisitor/tree_dsl_spec.rb +57 -0
  35. data/spec/treevisitor/tree_dsl_with_derived_class1_spec.rb +53 -0
  36. data/spec/treevisitor/tree_dsl_with_derived_class_spec.rb +51 -0
  37. data/spec/treevisitor/{dir_processor_spec.rb → util/dir_processor_spec.rb} +2 -4
  38. data/spec/treevisitor/visitor_dsl_spec.rb +32 -0
  39. data/spec/treevisitor/visitors/block_tree_node_visitor_spec.rb +27 -0
  40. data/spec/treevisitor/visitors/callback_tree_node_visitor2_spec.rb +38 -0
  41. data/spec/treevisitor/visitors/callback_tree_node_visitors_spec.rb +29 -0
  42. data/spec/treevisitor/visitors/depth_tree_node_visitor_spec.rb +30 -0
  43. data/tasks/jeweler.rake +4 -8
  44. data/treevisitor.gemspec +114 -0
  45. metadata +48 -29
  46. data/README.rdoc +0 -42
  47. data/lib/treevisitor/dir_tree_walker.rb +0 -165
  48. data/spec/treevisitor/dir_tree_walker_spec.rb +0 -50
  49. data/spec/treevisitor/tree_node_dsl_spec.rb +0 -153
  50. data/spec/treevisitor/tree_node_visitor_spec.rb +0 -70
  51. data/tasks/rubyforge.rake +0 -28
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 5
9
- version: 0.1.5
8
+ - 6
9
+ version: 0.1.6
10
10
  platform: ruby
11
11
  authors:
12
12
  - Tokiro
@@ -14,11 +14,11 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-01-05 00:00:00 +01:00
17
+ date: 2011-01-21 00:00:00 +01:00
18
18
  default_executable: tree.rb
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- name: abstract
21
+ name: json
22
22
  requirement: &id001 !ruby/object:Gem::Requirement
23
23
  none: false
24
24
  requirements:
@@ -103,49 +103,62 @@ extensions: []
103
103
 
104
104
  extra_rdoc_files:
105
105
  - LICENSE.txt
106
- - README.rdoc
106
+ - README.md
107
107
  files:
108
- - README.rdoc
108
+ - LICENSE.txt
109
+ - README.md
109
110
  - Rakefile
110
111
  - VERSION.yml
111
- - examples/directory_without_subdirectory.rb
112
- - examples/find_files.rb
113
- - examples/print_files.rb
112
+ - examples/directory_walker/directory_without_subdirectory.rb
113
+ - examples/directory_walker/find_files.rb
114
+ - examples/directory_walker/print_files.rb
115
+ - examples/protovis/directory_to_json_visitor.rb
116
+ - examples/protovis/index.html
117
+ - examples/protovis/protovis-d3.2.js
118
+ - examples/protovis/treevisitor.js
119
+ - examples/protovis/treevisitor.png
114
120
  - lib/tree_visitor.rb
115
121
  - lib/treevisitor.rb
116
122
  - lib/treevisitor/abs_node.rb
123
+ - lib/treevisitor/basic_tree_node_visitor.rb
117
124
  - lib/treevisitor/cli/cli_tree.rb
118
- - lib/treevisitor/dir_processor.rb
119
- - lib/treevisitor/dir_tree_walker.rb
125
+ - lib/treevisitor/directory_walker.rb
120
126
  - lib/treevisitor/leaf_node.rb
121
127
  - lib/treevisitor/tree_node.rb
122
128
  - lib/treevisitor/tree_node_visitor.rb
129
+ - lib/treevisitor/util/dir_processor.rb
123
130
  - lib/treevisitor/visitors/block_tree_node_visitor.rb
124
131
  - lib/treevisitor/visitors/build_dir_tree_visitor.rb
125
132
  - lib/treevisitor/visitors/callback_tree_node_visitor.rb
126
133
  - lib/treevisitor/visitors/callback_tree_node_visitor2.rb
127
134
  - lib/treevisitor/visitors/clone_tree_node_visitor.rb
128
135
  - lib/treevisitor/visitors/depth_tree_node_visitor.rb
136
+ - lib/treevisitor/visitors/directory_to_hash_visitor.rb
129
137
  - lib/treevisitor/visitors/flat_print_tree_node_visitors.rb
130
138
  - lib/treevisitor/visitors/print_dir_tree_visitor.rb
131
139
  - lib/treevisitor/visitors/print_tree_node_visitor.rb
132
140
  - lib/treevisitor_cli.rb
133
141
  - tasks/jeweler.rake
134
142
  - tasks/rspec.rake
135
- - tasks/rubyforge.rake
136
143
  - tasks/yard.rake
137
- - LICENSE.txt
138
- - spec/fixtures/test_dir/.dir_with_dot/dummy.txt
139
- - spec/fixtures/test_dir/dir.1/dir.1.2/file.1.2.1
140
- - spec/fixtures/test_dir/dir.1/file.1.1
141
- - spec/fixtures/test_dir/dir.2/file.2.1
144
+ - treevisitor.gemspec
145
+ - spec/fixtures/test_dir_1/.dir_with_dot/dummy.txt
146
+ - spec/fixtures/test_dir_1/dir.1/dir.1.2/file.1.2.1
147
+ - spec/fixtures/test_dir_1/dir.1/file.1.1
148
+ - spec/fixtures/test_dir_1/dir.2/file.2.1
142
149
  - spec/spec_helper.rb
143
150
  - spec/treevisitor/cli/cli_tree_spec.rb
144
- - spec/treevisitor/dir_processor_spec.rb
145
- - spec/treevisitor/dir_tree_walker_spec.rb
146
- - spec/treevisitor/tree_node_dsl_spec.rb
151
+ - spec/treevisitor/directory_walker_spec.rb
152
+ - spec/treevisitor/tree_dsl_spec.rb
153
+ - spec/treevisitor/tree_dsl_with_derived_class1_spec.rb
154
+ - spec/treevisitor/tree_dsl_with_derived_class_spec.rb
147
155
  - spec/treevisitor/tree_node_spec.rb
148
- - spec/treevisitor/tree_node_visitor_spec.rb
156
+ - spec/treevisitor/util/dir_processor_spec.rb
157
+ - spec/treevisitor/visitor_dsl_spec.rb
158
+ - spec/treevisitor/visitors/block_tree_node_visitor_spec.rb
159
+ - spec/treevisitor/visitors/callback_tree_node_visitor2_spec.rb
160
+ - spec/treevisitor/visitors/callback_tree_node_visitors_spec.rb
161
+ - spec/treevisitor/visitors/depth_tree_node_visitor_spec.rb
149
162
  - bin/tree.rb
150
163
  has_rdoc: true
151
164
  homepage: http://github.com/tokiro/treevisitor
@@ -180,14 +193,20 @@ signing_key:
180
193
  specification_version: 3
181
194
  summary: Implementation of visitor design pattern
182
195
  test_files:
183
- - spec/fixtures/test_dir/.dir_with_dot/dummy.txt
184
- - spec/fixtures/test_dir/dir.1/dir.1.2/file.1.2.1
185
- - spec/fixtures/test_dir/dir.1/file.1.1
186
- - spec/fixtures/test_dir/dir.2/file.2.1
196
+ - spec/fixtures/test_dir_1/.dir_with_dot/dummy.txt
197
+ - spec/fixtures/test_dir_1/dir.1/dir.1.2/file.1.2.1
198
+ - spec/fixtures/test_dir_1/dir.1/file.1.1
199
+ - spec/fixtures/test_dir_1/dir.2/file.2.1
187
200
  - spec/spec_helper.rb
188
201
  - spec/treevisitor/cli/cli_tree_spec.rb
189
- - spec/treevisitor/dir_processor_spec.rb
190
- - spec/treevisitor/dir_tree_walker_spec.rb
191
- - spec/treevisitor/tree_node_dsl_spec.rb
202
+ - spec/treevisitor/directory_walker_spec.rb
203
+ - spec/treevisitor/tree_dsl_spec.rb
204
+ - spec/treevisitor/tree_dsl_with_derived_class1_spec.rb
205
+ - spec/treevisitor/tree_dsl_with_derived_class_spec.rb
192
206
  - spec/treevisitor/tree_node_spec.rb
193
- - spec/treevisitor/tree_node_visitor_spec.rb
207
+ - spec/treevisitor/util/dir_processor_spec.rb
208
+ - spec/treevisitor/visitor_dsl_spec.rb
209
+ - spec/treevisitor/visitors/block_tree_node_visitor_spec.rb
210
+ - spec/treevisitor/visitors/callback_tree_node_visitor2_spec.rb
211
+ - spec/treevisitor/visitors/callback_tree_node_visitors_spec.rb
212
+ - spec/treevisitor/visitors/depth_tree_node_visitor_spec.rb
data/README.rdoc DELETED
@@ -1,42 +0,0 @@
1
- = tree.rb / tree visitor library
2
-
3
- +tree.rb+ is a 'clone' of tree unix command. It is based on tree visitor library.
4
- Tree visitor is an implementation of visitor design pattern.
5
-
6
- $ tree.rb lib
7
-
8
- lib
9
- |-- tree_visitor.rb
10
- |-- treevisitor.rb
11
- |-- treevisitor_cli.rb
12
- `-- treevisitor
13
- |-- abs_node.rb
14
- |-- dir_processor.rb
15
- |-- dir_tree_walker.rb
16
- |-- leaf_node.rb
17
- |-- tree_node.rb
18
- |-- tree_node_visitor.rb
19
- |-- cli
20
- | `-- cli_tree.rb
21
- `-- visitors
22
- |-- block_tree_node_visitor.rb
23
- |-- build_dir_tree_visitor.rb
24
- |-- callback_tree_node_visitor.rb
25
- |-- callback_tree_node_visitor2.rb
26
- |-- clone_tree_node_visitor.rb
27
- |-- depth_tree_node_visitor.rb
28
- |-- flat_print_tree_node_visitors.rb
29
- |-- print_dir_tree_visitor.rb
30
- `-- print_tree_node_visitor.rb
31
-
32
- == Documentation
33
-
34
- http://rubydoc.info/gems/treevisitor
35
-
36
- == INSTALL:
37
-
38
- sudo gem install treevisitor
39
-
40
- == Copyright
41
-
42
- Copyright (c) 2009-2010 tokiro.oyama@gmail.com. See LICENSE for details.
@@ -1,165 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- module TreeVisitor
3
-
4
- #
5
- # Visit a file system directory
6
- #
7
- class DirTreeWalker
8
-
9
- #
10
- # @param [String] dirname the root of the tree (top level directory)
11
- #
12
- def initialize(dirname)
13
- @dirname = dirname
14
- unless File.directory?(dirname)
15
- raise "#{dirname} is not a directory!"
16
- end
17
-
18
- @visitor = nil
19
-
20
- #
21
- # pattern
22
- #
23
- @ignore_dir_patterns = []
24
- @ignore_file_patterns = []
25
-
26
- @match_file_patterns = []
27
-
28
- #
29
- # options
30
- #
31
- @visit_file = true
32
- end
33
-
34
- ##########################################################################
35
- # Pattern
36
-
37
-
38
- #
39
- # Ignore a node (leaf/Tree) matching pattern
40
- # @param [RegEx] pattern
41
- #
42
- def ignore(pattern)
43
- @ignore_dir_patterns << pattern
44
- @ignore_file_patterns << pattern
45
- self
46
- end
47
-
48
- #
49
- # Ignore a directory (Tree) matching pattern
50
- # @param [RegEx] pattern
51
- #
52
- def ignore_dir(pattern)
53
- @ignore_dir_patterns << pattern
54
- self
55
- end
56
-
57
- #
58
- # Ignore a file (Leaf) matching pattern
59
- # @param [RegEx] pattern
60
- #
61
- def ignore_file(pattern)
62
- @ignore_file_patterns << pattern
63
- self
64
- end
65
-
66
- #
67
- # Just the opposite of ignore
68
- # directory/file matching pattern will be visited
69
- #
70
- # @param [RegEx] pattern
71
- #
72
- def match(pattern)
73
- @match_file_patterns << pattern
74
- self
75
- end
76
-
77
- ##########################################################################
78
- # Options
79
-
80
- #
81
- # it is true to visit file
82
- #
83
- attr_accessor :visit_file
84
-
85
- ##########################################################################
86
-
87
- #
88
- # Test directory ignore pattern
89
- #
90
- # @param [String] directory name
91
- # @return [boolean] if dirname match almost one pattern
92
- #
93
- def ignore_dir?(dirname)
94
- _include?(@ignore_dir_patterns, File.basename(dirname))
95
- end
96
-
97
- #
98
- # Test file ignore pattern
99
- #
100
- # @param [String] file name
101
- # @return [boolean] if filename match almost one pattern
102
- #
103
- def ignore_file?(filename)
104
- _include?(@ignore_file_patterns, File.basename(filename))
105
- end
106
-
107
- #
108
- # Test common ignore pattern
109
- #
110
- # @param [String] file name
111
- # @return [boolean] if filename match almost one pattern
112
- #
113
- def match?(filename)
114
- return true if @match_file_patterns.empty?
115
- _include?(@match_file_patterns, File.basename(filename))
116
- end
117
-
118
- #
119
- # Run the visitor through the directory tree
120
- #
121
- # @param [TreeNodeVisitor]
122
- # @return [TreeNodeVisitor] the visitor
123
- #
124
- def run(tree_node_visitor)
125
- @visitor = tree_node_visitor
126
- process_directory(File.expand_path(@dirname))
127
- tree_node_visitor
128
- end
129
-
130
- private
131
-
132
- def _include?(patterns, basename)
133
- # return false if the patters.empty?
134
- patterns.find { |pattern|
135
- if pattern.kind_of? Regexp
136
- pattern.match(basename)
137
- else
138
- basename == pattern
139
- end
140
- }
141
- end
142
-
143
- #
144
- # recurse on other directories
145
- #
146
- def process_directory(dirname)
147
- @visitor.enter_tree_node(dirname)
148
- # return if ignore_dir?( dirname )
149
-
150
- Dir.entries(dirname).sort.each { |basename|
151
- next if basename == "." or basename == ".." # ignore always "." and ".."
152
- pathname = File.join(dirname, basename)
153
-
154
- if File.directory?(pathname)
155
- process_directory(pathname) unless ignore_dir?(basename)
156
- else
157
- if !!@visit_file && match?(basename) && !ignore_file?(basename)
158
- @visitor.visit_leaf_node(pathname)
159
- end
160
- end
161
- }
162
- @visitor.exit_tree_node(dirname)
163
- end
164
- end
165
- end
@@ -1,50 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- require File.join(File.dirname(__FILE__), "..", "spec_helper")
3
-
4
- describe DirTreeWalker do
5
-
6
- it "should accumulate file names" do
7
- dir_tree_walker = DirTreeWalker.new( File.join(FIXTURES, "test_dir") )
8
-
9
- accumulator = []
10
- visitor = BlockTreeNodeVisitor.new { |pathname| accumulator << File.basename( pathname ) }
11
- dir_tree_walker.run( visitor )
12
- accumulator.length.should == 9
13
- accumulator.sort.should == %w{ test_dir dir.1 dir.1.2 file.1.2.1 file.1.1 dir.2 file.2.1 .dir_with_dot dummy.txt}.sort
14
- end
15
-
16
- it "should accumulate file names 2" do
17
- dir_tree_walker = DirTreeWalker.new( File.join( FIXTURES, "test_dir_2" ) )
18
- dir_tree_walker.ignore( "sub" )
19
-
20
- accumulator = []
21
- visitor = BlockTreeNodeVisitor.new { |pathname| accumulator << File.basename( pathname ) }
22
- dir_tree_walker.run( visitor )
23
- # accumulator.length.should == 4
24
- accumulator.sort.should == %w{ [Dsube] test_dir_2}.sort
25
- end
26
-
27
- it "should ignore files" do
28
- dtp = DirTreeWalker.new( "." )
29
-
30
- dtp.ignore(/^\./)
31
- dtp.ignore_file?( ".thumbnails" ).should be_true
32
- dtp.ignore_dir?( ".thumbnails" ).should be_true
33
-
34
- dtp.ignore_dir("thumbnails")
35
- dtp.ignore_dir?( ".thumbnails" ).should be_true
36
- dtp.ignore_dir?( "thumbnails" ).should be_true
37
- dtp.ignore_dir?( "pippo" ).should be_false
38
-
39
- dtp.ignore_file("xvpics")
40
- dtp.ignore_file?( "xvpics" ).should be_true
41
- end
42
-
43
- it "should ignore files 2" do
44
- dtp = DirTreeWalker.new( "." )
45
-
46
- dtp.ignore("sub")
47
- dtp.ignore_file?( "[Dsube]" ).should be_false
48
- dtp.ignore_dir?( "[Dsube]" ).should be_false
49
- end
50
- end
@@ -1,153 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- require File.join(File.dirname(__FILE__), "..", "spec_helper")
3
-
4
- describe "TreeNodeDsl" do
5
-
6
- class DTreeNode < TreeNode
7
- def to_s
8
- "dt: #{content}"
9
- end
10
- end
11
-
12
- class DLeafNode < LeafNode
13
- def to_s
14
- "dl: #{content}"
15
- end
16
- end
17
-
18
- class ArgsTreeNode < TreeNode
19
-
20
- attr_reader :description
21
-
22
- def initialize(name, description, parent)
23
- super(name, parent)
24
- @description = description
25
- end
26
-
27
- def to_s
28
- "a: #{description}"
29
- end
30
- end
31
-
32
- class ArgsLeafNode < LeafNode
33
-
34
- attr_reader :description
35
-
36
- def initialize(name, description, parent)
37
- super(name, parent)
38
- @description = description
39
- end
40
-
41
- def to_s
42
- "a: #{description}"
43
- end
44
- end
45
-
46
-
47
-
48
- it "test_dsl" do
49
- tree = TreeNode.create do
50
- node "root" do
51
- leaf "l1"
52
- leaf "l2"
53
- node "sub" do
54
- leaf "l3"
55
- end
56
- node "woleaves"
57
- end
58
- end
59
-
60
- # puts tree.to_str
61
- out =<<EOS
62
- root
63
- |-- l1
64
- |-- l2
65
- |-- sub
66
- | `-- l3
67
- `-- woleaves
68
- EOS
69
- tree.to_str.should == out
70
- end
71
-
72
- it "test_dsl_block_with_arg" do
73
- tree = TreeNode.create do
74
- node "root" do |node|
75
- node.prefix_path=("pre/")
76
- leaf "l1"
77
- leaf "l2"
78
- node "sub" do
79
- leaf "l3" do |leaf|
80
- end
81
- end
82
- node "woleaves"
83
- end
84
- end
85
-
86
- # puts tree.to_str
87
- out =<<EOS
88
- root
89
- |-- l1
90
- |-- l2
91
- |-- sub
92
- | `-- l3
93
- `-- woleaves
94
- EOS
95
- tree.to_str.should == out
96
- tree.find("l3").path_with_prefix.should == "pre/root/sub/l3"
97
- end
98
-
99
- it "test_derivated" do
100
- tree = TreeNode.create(DTreeNode, DLeafNode) do
101
- node "root" do
102
- leaf "l1"
103
- leaf "l2"
104
- node "sub" do
105
- leaf "l3"
106
- end
107
- end
108
- end
109
-
110
- # puts tree.to_str
111
- out =<<EOS
112
- dt: root
113
- |-- dl: l1
114
- |-- dl: l2
115
- `-- dt: sub
116
- `-- dl: l3
117
- EOS
118
- tree.to_str.should == out
119
-
120
- tree = DTreeNode.create(DLeafNode) do
121
- node "root" do
122
- leaf "l1"
123
- leaf "l2"
124
- node "sub" do
125
- leaf "l3"
126
- end
127
- end
128
- end
129
- tree.to_str.should == out
130
- end
131
-
132
- it "test_derivated_args" do
133
- tree = TreeNode.create(ArgsTreeNode, ArgsLeafNode) do
134
- node "root", "droot" do
135
- leaf "l1", "dl1"
136
- leaf "l2", "dl2"
137
- node "sub", "dsub" do
138
- leaf "l3", "dl3"
139
- end
140
- end
141
- end
142
-
143
- # puts tree.to_str
144
- out =<<EOS
145
- a: droot
146
- |-- a: dl1
147
- |-- a: dl2
148
- `-- a: dsub
149
- `-- a: dl3
150
- EOS
151
- tree.to_str.should == out
152
- end
153
- end
@@ -1,70 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- require File.join(File.dirname(__FILE__), "..", "spec_helper")
3
-
4
- require 'treevisitor/visitors/block_tree_node_visitor'
5
- require 'treevisitor/visitors/callback_tree_node_visitor'
6
- require 'treevisitor/visitors/callback_tree_node_visitor2'
7
- require 'treevisitor/visitors/clone_tree_node_visitor'
8
- require 'treevisitor/visitors/depth_tree_node_visitor'
9
-
10
- describe "TreeNodeVisitors" do
11
-
12
- before do
13
- ta = TreeNode.new( "a", nil )
14
- LeafNode.new("1", ta )
15
- LeafNode.new("2", ta )
16
-
17
- tb = TreeNode.new( "b", ta )
18
- LeafNode.new( "3", tb )
19
-
20
- @tree = ta
21
- end
22
-
23
- it BlockTreeNodeVisitor do
24
- accumulator = []
25
- visitor = BlockTreeNodeVisitor.new { |node| accumulator << node.content}
26
- @tree.accept( visitor )
27
- accumulator.length.should == 5
28
- accumulator.should == %w{ a 1 2 b 3 }
29
- end
30
-
31
- it DepthTreeNodeVisitor do
32
- visitor = DepthTreeNodeVisitor.new
33
- @tree.accept( visitor )
34
- visitor.depth.should == 0
35
-
36
- visitor = CloneTreeNodeVisitor.new
37
- @tree.accept( visitor )
38
- visitor.cloned_root.nr_nodes.should == @tree.nr_nodes
39
- end
40
-
41
- it CallbackTreeNodeVisitor do
42
- accumulator = []
43
- visitor = CallbackTreeNodeVisitor.new
44
- visitor.on_enter_tree_node{ |tree_node| accumulator << tree_node.content }
45
- visitor.on_visit_leaf_node{ |leaf_node| accumulator << leaf_node.content }
46
- @tree.accept( visitor )
47
- accumulator.length.should == 5
48
- accumulator.should == %w{ a 1 2 b 3 }
49
- end
50
-
51
- it CallbackTreeNodeVisitor2 do
52
- visitor = CallbackTreeNodeVisitor2.new
53
- visitor.on_enter_tree_node{ |tree_node, new_parent_node|
54
- TreeNode.new("n" + tree_node.content, new_parent_node)
55
- }
56
- visitor.on_visit_leaf_node{ |leaf_node, new_parent_node|
57
- LeafNode.new( "n" + leaf_node.content, new_parent_node )
58
- }
59
- @tree.accept( visitor )
60
- new_root = visitor.root
61
- new_root.content.should == "n" + @tree.content
62
-
63
- accumulator = []
64
- visitor = BlockTreeNodeVisitor.new { |node| accumulator << node.content}
65
- new_root.accept( visitor )
66
- accumulator.length.should == 5
67
- accumulator.should == %w{ na n1 n2 nb n3 }
68
- end
69
-
70
- end
data/tasks/rubyforge.rake DELETED
@@ -1,28 +0,0 @@
1
- #
2
- # rubyforge
3
- #
4
- #begin
5
- # require 'rake/contrib/sshpublisher'
6
- # namespace :rubyforge do
7
- #
8
- # desc "Release gem and RDoc documentation to RubyForge"
9
- # task :release => ["rubyforge:release:gem", "rubyforge:release:docs"]
10
- #
11
- # namespace :release do
12
- # desc "Publish RDoc to RubyForge."
13
- # task :docs => [:rdoc] do
14
- # config = YAML.load(
15
- # File.read(File.expand_path('~/.rubyforge/user-config.yml'))
16
- # )
17
- #
18
- # host = "#{config['username']}@rubyforge.org"
19
- # remote_dir = "/var/www/gforge-projects/treevisitor/"
20
- # local_dir = 'rdoc'
21
- #
22
- # Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
23
- # end
24
- # end
25
- # end
26
- #rescue LoadError
27
- # puts "Rake SshDirPublisher is unavailable or your rubyforge environment is not configured."
28
- #end