rubytree 0.9.3pre → 0.9.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/API-CHANGES.rdoc +6 -0
- data/Gemfile.lock +1 -1
- data/History.rdoc +4 -0
- data/TAGS +76 -76
- data/lib/tree.rb +4 -4
- data/lib/tree/version.rb +1 -1
- data/test/test_tree.rb +17 -3
- metadata +5 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2696640cc7392fcb9a3d373ad067d2e58c01d0a0
|
4
|
+
data.tar.gz: 7ebb55c5a07049ff8ee0faa621e198d9e30354aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 84b245a63875a6e70bf3e63a24717430981eaf7c6c2c7671e1ef5e46b95e82aeb9f5890ab85a48bc560ab023062c8cc8b0ed840f9850ba0bf1b627f12705cc02
|
7
|
+
data.tar.gz: f30e25b3626ec5f44214711b4d7b9392469d39410e6c399aca0b94bbd961840a33584c51b553f2cd7e5534af1b8602edf5a1c68d5fff031af41d2e0977ceef3f
|
data/API-CHANGES.rdoc
CHANGED
@@ -9,6 +9,12 @@ Note: API level changes are expected to reduce dramatically after the 1.x
|
|
9
9
|
release. In most cases, an alternative will be provided to ensure relatively
|
10
10
|
smooth transition to the new APIs.
|
11
11
|
|
12
|
+
== Release 0.9.3 Changes
|
13
|
+
|
14
|
+
- The validation for unique node names has changed in the {Tree::TreeNode#add}
|
15
|
+
method. RubyTree no longer enforces globally unique names. The node-names need
|
16
|
+
to be unique only between the sibling nodes.
|
17
|
+
|
12
18
|
== Release 0.9.0 Changes
|
13
19
|
|
14
20
|
- New post-ordered traversal via the {Tree::TreeNode#postordered_each} method.
|
data/Gemfile.lock
CHANGED
data/History.rdoc
CHANGED
data/TAGS
CHANGED
@@ -81,32 +81,32 @@ module Tree::Tree48,2158
|
|
81
81
|
def to_s::Tree::TreeNode#to_s297,10212
|
82
82
|
def <<::Tree::TreeNode#<<320,10983
|
83
83
|
def add::Tree::TreeNode#add355,12489
|
84
|
-
def insertion_range::Tree::TreeNode#insertion_range375,
|
85
|
-
def remove!::Tree::TreeNode#remove!397,
|
86
|
-
def parent=::Tree::TreeNode#parent=412,
|
87
|
-
def remove_from_parent!::Tree::TreeNode#remove_from_parent!425,
|
88
|
-
def remove_all!::Tree::TreeNode#remove_all!436,
|
89
|
-
def set_as_root!::Tree::TreeNode#set_as_root!447,
|
90
|
-
def freeze_tree!::Tree::TreeNode#freeze_tree!457,
|
91
|
-
def []::Tree::TreeNode#[]497,
|
92
|
-
def each::Tree::TreeNode#each522,
|
93
|
-
def preordered_each::Tree::TreeNode#preordered_each550,
|
94
|
-
def postordered_each::Tree::TreeNode#postordered_each562,
|
95
|
-
def breadth_each::Tree::TreeNode#breadth_each598,
|
96
|
-
def children::Tree::TreeNode#children624,
|
97
|
-
def each_leaf::Tree::TreeNode#each_leaf645,
|
98
|
-
def first_child::Tree::TreeNode#first_child662,
|
99
|
-
def last_child::Tree::TreeNode#last_child670,
|
100
|
-
def first_sibling::Tree::TreeNode#first_sibling686,
|
101
|
-
def is_first_sibling?::Tree::TreeNode#is_first_sibling?696,
|
102
|
-
def last_sibling::Tree::TreeNode#last_sibling710,
|
103
|
-
def is_last_sibling?::Tree::TreeNode#is_last_sibling?720,
|
104
|
-
def siblings::Tree::TreeNode#siblings736,
|
105
|
-
def is_only_child?::Tree::TreeNode#is_only_child?755,
|
106
|
-
def next_sibling::Tree::TreeNode#next_sibling768,
|
107
|
-
def previous_sibling::Tree::TreeNode#previous_sibling784,
|
108
|
-
def <=>::Tree::TreeNode#<=>800,
|
109
|
-
def print_tree::Tree::TreeNode#print_tree808,
|
84
|
+
def insertion_range::Tree::TreeNode#insertion_range375,13451
|
85
|
+
def remove!::Tree::TreeNode#remove!397,14238
|
86
|
+
def parent=::Tree::TreeNode#parent=412,14641
|
87
|
+
def remove_from_parent!::Tree::TreeNode#remove_from_parent!425,15026
|
88
|
+
def remove_all!::Tree::TreeNode#remove_all!436,15398
|
89
|
+
def set_as_root!::Tree::TreeNode#set_as_root!447,15627
|
90
|
+
def freeze_tree!::Tree::TreeNode#freeze_tree!457,15953
|
91
|
+
def []::Tree::TreeNode#[]497,17471
|
92
|
+
def each::Tree::TreeNode#each522,18438
|
93
|
+
def preordered_each::Tree::TreeNode#preordered_each550,19398
|
94
|
+
def postordered_each::Tree::TreeNode#postordered_each562,19810
|
95
|
+
def breadth_each::Tree::TreeNode#breadth_each598,21236
|
96
|
+
def children::Tree::TreeNode#children624,22174
|
97
|
+
def each_leaf::Tree::TreeNode#each_leaf645,22795
|
98
|
+
def first_child::Tree::TreeNode#first_child662,23217
|
99
|
+
def last_child::Tree::TreeNode#last_child670,23428
|
100
|
+
def first_sibling::Tree::TreeNode#first_sibling686,23875
|
101
|
+
def is_first_sibling?::Tree::TreeNode#is_first_sibling?696,24149
|
102
|
+
def last_sibling::Tree::TreeNode#last_sibling710,24565
|
103
|
+
def is_last_sibling?::Tree::TreeNode#is_last_sibling?720,24835
|
104
|
+
def siblings::Tree::TreeNode#siblings736,25388
|
105
|
+
def is_only_child?::Tree::TreeNode#is_only_child?755,25940
|
106
|
+
def next_sibling::Tree::TreeNode#next_sibling768,26343
|
107
|
+
def previous_sibling::Tree::TreeNode#previous_sibling784,26817
|
108
|
+
def <=>::Tree::TreeNode#<=>800,27328
|
109
|
+
def print_tree::Tree::TreeNode#print_tree808,27557
|
110
110
|
|
111
111
|
test/run_test.rb,0
|
112
112
|
|
@@ -170,53 +170,53 @@ module TestTree::TestTree39,1725
|
|
170
170
|
def test_previous_sibling::TestTree::TestTreeNode#test_previous_sibling315,13146
|
171
171
|
def test_add::TestTree::TestTreeNode#test_add326,13675
|
172
172
|
def test_add_duplicate::TestTree::TestTreeNode#test_add_duplicate347,14357
|
173
|
-
def test_add_at_specific_position::TestTree::TestTreeNode#test_add_at_specific_position
|
174
|
-
def test_remove_bang::TestTree::TestTreeNode#test_remove_bang
|
175
|
-
def test_remove_all_bang::TestTree::TestTreeNode#test_remove_all_bang
|
176
|
-
def test_remove_from_parent_bang::TestTree::TestTreeNode#test_remove_from_parent_bang
|
177
|
-
def test_children::TestTree::TestTreeNode#test_children
|
178
|
-
def test_first_child::TestTree::TestTreeNode#test_first_child
|
179
|
-
def test_last_child::TestTree::TestTreeNode#test_last_child
|
180
|
-
def test_find::TestTree::TestTreeNode#test_find
|
181
|
-
def test_parentage::TestTree::TestTreeNode#test_parentage
|
182
|
-
def test_each::TestTree::TestTreeNode#test_each
|
183
|
-
def test_each_leaf::TestTree::TestTreeNode#test_each_leaf
|
184
|
-
def test_parent::TestTree::TestTreeNode#test_parent
|
185
|
-
def test_indexed_access::TestTree::TestTreeNode#test_indexed_access
|
186
|
-
def test_print_tree::TestTree::TestTreeNode#test_print_tree
|
187
|
-
def test_marshal_dump::TestTree::TestTreeNode#test_marshal_dump
|
188
|
-
alias test_marshal_load::TestTree::TestTreeNode#test_marshal_load
|
189
|
-
def test_collect::TestTree::TestTreeNode#test_collect
|
190
|
-
def test_freeze_tree_bang::TestTree::TestTreeNode#test_freeze_tree_bang
|
191
|
-
def test_content::TestTree::TestTreeNode#test_content
|
192
|
-
def test_depth::TestTree::TestTreeNode#test_depth
|
193
|
-
def do_deprecated_depth::TestTree::TestTreeNode#do_deprecated_depth
|
194
|
-
def test_node_height::TestTree::TestTreeNode#test_node_height
|
195
|
-
def test_node_depth::TestTree::TestTreeNode#test_node_depth
|
196
|
-
def test_level::TestTree::TestTreeNode#test_level
|
197
|
-
def test_breadth::TestTree::TestTreeNode#test_breadth
|
198
|
-
def test_breadth_each::TestTree::TestTreeNode#test_breadth_each
|
199
|
-
def test_preordered_each::TestTree::TestTreeNode#test_preordered_each
|
200
|
-
def test_postordered_each::TestTree::TestTreeNode#test_postordered_each
|
201
|
-
def test_detached_copy::TestTree::TestTreeNode#test_detached_copy
|
202
|
-
def test_detached_subtree_copy::TestTree::TestTreeNode#test_detached_subtree_copy
|
203
|
-
def test_has_children_eh::TestTree::TestTreeNode#test_has_children_eh
|
204
|
-
def test_is_leaf_eh::TestTree::TestTreeNode#test_is_leaf_eh
|
205
|
-
def test_is_root_eh::TestTree::TestTreeNode#test_is_root_eh
|
206
|
-
def test_content_equals::TestTree::TestTreeNode#test_content_equals
|
207
|
-
def test_size::TestTree::TestTreeNode#test_size
|
208
|
-
def test_lt2::TestTree::TestTreeNode#test_lt2
|
209
|
-
def test_index::TestTree::TestTreeNode#test_index
|
210
|
-
def test_in_degree::TestTree::TestTreeNode#test_in_degree
|
211
|
-
def test_out_degree::TestTree::TestTreeNode#test_out_degree
|
212
|
-
def test_json_serialization::TestTree::TestTreeNode#test_json_serialization
|
213
|
-
def test_json_deserialization::TestTree::TestTreeNode#test_json_deserialization
|
214
|
-
def test_json_roundtrip::TestTree::TestTreeNode#test_json_roundtrip
|
215
|
-
def test_old_camelCase_method_names::TestTree::TestTreeNode#test_old_camelCase_method_names
|
216
|
-
def test_integer_node_names::TestTree::TestTreeNode#test_integer_node_names
|
217
|
-
def test_add_node_to_self_as_child::TestTree::TestTreeNode#test_add_node_to_self_as_child
|
218
|
-
def test_single_node_becomes_leaf::TestTree::TestTreeNode#test_single_node_becomes_leaf
|
219
|
-
def test_unique_node_names::TestTree::TestTreeNode#test_unique_node_names
|
220
|
-
def setup_other_test_tree::TestTree::TestTreeNode#setup_other_test_tree
|
221
|
-
def test_merge::TestTree::TestTreeNode#test_merge
|
222
|
-
def test_merge_bang::TestTree::TestTreeNode#test_merge_bang
|
173
|
+
def test_add_at_specific_position::TestTree::TestTreeNode#test_add_at_specific_position388,15785
|
174
|
+
def test_remove_bang::TestTree::TestTreeNode#test_remove_bang452,18838
|
175
|
+
def test_remove_all_bang::TestTree::TestTreeNode#test_remove_all_bang484,19801
|
176
|
+
def test_remove_from_parent_bang::TestTree::TestTreeNode#test_remove_from_parent_bang494,20107
|
177
|
+
def test_children::TestTree::TestTreeNode#test_children513,20822
|
178
|
+
def test_first_child::TestTree::TestTreeNode#test_first_child549,22411
|
179
|
+
def test_last_child::TestTree::TestTreeNode#test_last_child558,22739
|
180
|
+
def test_find::TestTree::TestTreeNode#test_find567,23055
|
181
|
+
def test_parentage::TestTree::TestTreeNode#test_parentage582,23650
|
182
|
+
def test_each::TestTree::TestTreeNode#test_each591,23982
|
183
|
+
def test_each_leaf::TestTree::TestTreeNode#test_each_leaf610,24666
|
184
|
+
def test_parent::TestTree::TestTreeNode#test_parent637,25861
|
185
|
+
def test_indexed_access::TestTree::TestTreeNode#test_indexed_access648,26280
|
186
|
+
def test_print_tree::TestTree::TestTreeNode#test_print_tree659,26653
|
187
|
+
def test_marshal_dump::TestTree::TestTreeNode#test_marshal_dump666,26813
|
188
|
+
alias test_marshal_load::TestTree::TestTreeNode#test_marshal_load708,28935
|
189
|
+
def test_collect::TestTree::TestTreeNode#test_collect711,29056
|
190
|
+
def test_freeze_tree_bang::TestTree::TestTreeNode#test_freeze_tree_bang721,29322
|
191
|
+
def test_content::TestTree::TestTreeNode#test_content735,29844
|
192
|
+
def test_depth::TestTree::TestTreeNode#test_depth743,30235
|
193
|
+
def do_deprecated_depth::TestTree::TestTreeNode#do_deprecated_depth754,30608
|
194
|
+
def test_node_height::TestTree::TestTreeNode#test_node_height772,31176
|
195
|
+
def test_node_depth::TestTree::TestTreeNode#test_node_depth797,32385
|
196
|
+
def test_level::TestTree::TestTreeNode#test_level810,32822
|
197
|
+
def test_breadth::TestTree::TestTreeNode#test_breadth825,33365
|
198
|
+
def test_breadth_each::TestTree::TestTreeNode#test_breadth_each844,34012
|
199
|
+
def test_preordered_each::TestTree::TestTreeNode#test_preordered_each885,35318
|
200
|
+
def test_postordered_each::TestTree::TestTreeNode#test_postordered_each924,36572
|
201
|
+
def test_detached_copy::TestTree::TestTreeNode#test_detached_copy963,37827
|
202
|
+
def test_detached_subtree_copy::TestTree::TestTreeNode#test_detached_subtree_copy980,38555
|
203
|
+
def test_has_children_eh::TestTree::TestTreeNode#test_has_children_eh1014,40807
|
204
|
+
def test_is_leaf_eh::TestTree::TestTreeNode#test_is_leaf_eh1020,40969
|
205
|
+
def test_is_root_eh::TestTree::TestTreeNode#test_is_root_eh1027,41175
|
206
|
+
def test_content_equals::TestTree::TestTreeNode#test_content_equals1033,41338
|
207
|
+
def test_size::TestTree::TestTreeNode#test_size1041,41603
|
208
|
+
def test_lt2::TestTree::TestTreeNode#test_lt21050,41867
|
209
|
+
def test_index::TestTree::TestTreeNode#test_index1061,42359
|
210
|
+
def test_in_degree::TestTree::TestTreeNode#test_in_degree1082,43455
|
211
|
+
def test_out_degree::TestTree::TestTreeNode#test_out_degree1093,43922
|
212
|
+
def test_json_serialization::TestTree::TestTreeNode#test_json_serialization1104,44409
|
213
|
+
def test_json_deserialization::TestTree::TestTreeNode#test_json_deserialization1128,45209
|
214
|
+
def test_json_roundtrip::TestTree::TestTreeNode#test_json_roundtrip1156,46395
|
215
|
+
def test_old_camelCase_method_names::TestTree::TestTreeNode#test_old_camelCase_method_names1172,47136
|
216
|
+
def test_integer_node_names::TestTree::TestTreeNode#test_integer_node_names1203,48204
|
217
|
+
def test_add_node_to_self_as_child::TestTree::TestTreeNode#test_add_node_to_self_as_child1234,49434
|
218
|
+
def test_single_node_becomes_leaf::TestTree::TestTreeNode#test_single_node_becomes_leaf1250,49947
|
219
|
+
def test_unique_node_names::TestTree::TestTreeNode#test_unique_node_names1262,50368
|
220
|
+
def setup_other_test_tree::TestTree::TestTreeNode#setup_other_test_tree1276,50723
|
221
|
+
def test_merge::TestTree::TestTreeNode#test_merge1304,51712
|
222
|
+
def test_merge_bang::TestTree::TestTreeNode#test_merge_bang1333,53150
|
data/lib/tree.rb
CHANGED
@@ -354,11 +354,11 @@ module Tree
|
|
354
354
|
# @see #<<
|
355
355
|
def add(child, at_index = -1)
|
356
356
|
raise ArgumentError, "Attempting to add a nil node" unless child # Only handles the immediate child scenario
|
357
|
-
raise ArgumentError, "Attempting add node to itself" if self
|
358
|
-
raise ArgumentError, "Attempting
|
357
|
+
raise ArgumentError, "Attempting add node to itself" if self.equal?(child)
|
358
|
+
raise ArgumentError, "Attempting add root as a child" if self.equal?(root) unless self.is_root?
|
359
|
+
|
359
360
|
# Lazy mans unique test, won't test if children of child are unique in this tree too.
|
360
|
-
|
361
|
-
self.children.each { |node| raise "Child #{child.name} already added!" if node.name == child.name }
|
361
|
+
raise "Child #{child.name} already added!" if @children_hash.include?(child.name)
|
362
362
|
|
363
363
|
if insertion_range.include?(at_index)
|
364
364
|
@children.insert(at_index, child)
|
data/lib/tree/version.rb
CHANGED
data/test/test_tree.rb
CHANGED
@@ -359,9 +359,9 @@ module TestTree
|
|
359
359
|
root = Tree::TreeNode.new("root")
|
360
360
|
one = Tree::TreeNode.new("one")
|
361
361
|
two = Tree::TreeNode.new("two")
|
362
|
+
three= Tree::TreeNode.new("three")
|
362
363
|
deep = Tree::TreeNode.new("deep")
|
363
364
|
|
364
|
-
|
365
365
|
root << one << deep
|
366
366
|
# The same child cannot be added under any circumstance
|
367
367
|
assert_raise(RuntimeError) { root.add(Tree::TreeNode.new(one.name)) }
|
@@ -370,7 +370,17 @@ module TestTree
|
|
370
370
|
begin
|
371
371
|
root << two << deep
|
372
372
|
rescue RuntimeError => e
|
373
|
-
fail("Error! The RuntimeError should not have been thrown.")
|
373
|
+
fail("Error! The RuntimeError should not have been thrown. The same node can be added to different branches.")
|
374
|
+
end
|
375
|
+
|
376
|
+
assert_raise(ArgumentError) {root << three << three }
|
377
|
+
|
378
|
+
root.remove_all! # Because the first child 'three' whould have been added.
|
379
|
+
begin
|
380
|
+
three_dup = Tree::TreeNode.new("three")
|
381
|
+
root << three << three_dup
|
382
|
+
rescue RuntimeError => e
|
383
|
+
fail("Error! The RuntimeError should not have been thrown. The same node name can be used in the branch.")
|
374
384
|
end
|
375
385
|
end
|
376
386
|
|
@@ -1229,7 +1239,11 @@ module TestTree
|
|
1229
1239
|
|
1230
1240
|
# And now a scenario where the node addition is done down the hierarchy
|
1231
1241
|
child = Tree::TreeNode.new("child")
|
1232
|
-
|
1242
|
+
begin
|
1243
|
+
root << child << root
|
1244
|
+
rescue ArgumentError => e
|
1245
|
+
fail("The ArgumentError should not have been raised.")
|
1246
|
+
end
|
1233
1247
|
end
|
1234
1248
|
|
1235
1249
|
# Test whether the tree_leaf method works correctly
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubytree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anupam Sengupta
|
@@ -161,19 +161,9 @@ licenses:
|
|
161
161
|
metadata: {}
|
162
162
|
post_install_message: |2
|
163
163
|
========================================================================
|
164
|
-
Thank you for installing
|
164
|
+
Thank you for installing RubyTree.
|
165
165
|
|
166
|
-
Note
|
167
|
-
It now returns an empty array for the root node.
|
168
|
-
|
169
|
-
WARNING: SIGNIFICANT API CHANGE in 0.8.0 !
|
170
|
-
------------------------------------------
|
171
|
-
|
172
|
-
Please note that as of 0.8.0 the CamelCase method names are DEPRECATED.
|
173
|
-
The new method names follow the ruby_convention (separated by '_').
|
174
|
-
|
175
|
-
The old CamelCase methods still work (a warning will be displayed),
|
176
|
-
but may go away in the future.
|
166
|
+
Note:: As of 0.9.3, node names do not need to be globally unique.
|
177
167
|
|
178
168
|
Details of the API changes are documented in the API-CHANGES file.
|
179
169
|
========================================================================
|
@@ -190,9 +180,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
190
180
|
version: 1.8.7
|
191
181
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
192
182
|
requirements:
|
193
|
-
- - "
|
183
|
+
- - ">="
|
194
184
|
- !ruby/object:Gem::Version
|
195
|
-
version:
|
185
|
+
version: '0'
|
196
186
|
requirements: []
|
197
187
|
rubyforge_project: rubytree
|
198
188
|
rubygems_version: 2.2.1
|