treevisitor 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
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