rubytree 0.9.3pre → 0.9.3
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.
- 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
|