rubytree 0.9.5pre → 0.9.5pre2
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/Gemfile.lock +13 -15
- data/History.rdoc +6 -0
- data/README.md +3 -0
- data/TAGS +55 -49
- data/lib/tree.rb +46 -1
- data/lib/tree/version.rb +1 -1
- data/test/test_tree.rb +28 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3228b0b44776c265981c6e870b806eac361f8adf
|
4
|
+
data.tar.gz: 310b261873bc3d2ba5ad1e45e5f56145bc02d6f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65f56e0e2848d8f3756ed0225beb92dc055200f1b94e7c376a5593253c844966634e38362b1aedf82160434878985c27ded1805da419d5b508ad309db8ec4ae3
|
7
|
+
data.tar.gz: 38777f6bf8ed9164df5f740e01120640f1df2f4cb26156795c0e8dc884e4d7fd8a881bf7400e3ab1d24fca0ea49cb1f6ae371ba2726ee37283dc6f9d87111513
|
data/Gemfile.lock
CHANGED
@@ -1,30 +1,28 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rubytree (0.9.
|
4
|
+
rubytree (0.9.5pre2)
|
5
5
|
json (~> 1.8)
|
6
6
|
structured_warnings (~> 0.1)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
coveralls (0.7.
|
11
|
+
coveralls (0.7.2)
|
12
12
|
multi_json (~> 1.3)
|
13
|
-
rest-client
|
13
|
+
rest-client (= 1.6.7)
|
14
14
|
simplecov (>= 0.7)
|
15
|
-
term-ansicolor
|
16
|
-
thor
|
15
|
+
term-ansicolor (= 1.2.2)
|
16
|
+
thor (= 0.18.1)
|
17
17
|
docile (1.1.5)
|
18
18
|
json (1.8.1)
|
19
19
|
mime-types (2.4.3)
|
20
20
|
multi_json (1.10.1)
|
21
|
-
|
22
|
-
|
23
|
-
rdoc (4.1.2)
|
21
|
+
rake (10.4.2)
|
22
|
+
rdoc (4.2.0)
|
24
23
|
json (~> 1.4)
|
25
|
-
rest-client (1.7
|
26
|
-
mime-types (>= 1.16
|
27
|
-
netrc (~> 0.7)
|
24
|
+
rest-client (1.6.7)
|
25
|
+
mime-types (>= 1.16)
|
28
26
|
rtags (0.98)
|
29
27
|
rtagstask (0.0.4)
|
30
28
|
rtags (> 0.0.0)
|
@@ -34,10 +32,10 @@ GEM
|
|
34
32
|
simplecov-html (~> 0.8.0)
|
35
33
|
simplecov-html (0.8.0)
|
36
34
|
structured_warnings (0.1.4)
|
37
|
-
term-ansicolor (1.
|
38
|
-
tins (~>
|
39
|
-
thor (0.
|
40
|
-
tins (
|
35
|
+
term-ansicolor (1.2.2)
|
36
|
+
tins (~> 0.8)
|
37
|
+
thor (0.18.1)
|
38
|
+
tins (0.13.2)
|
41
39
|
yard (0.8.7.6)
|
42
40
|
|
43
41
|
PLATFORMS
|
data/History.rdoc
CHANGED
@@ -2,6 +2,12 @@
|
|
2
2
|
|
3
3
|
= History of Changes
|
4
4
|
|
5
|
+
=== 0.9.5pre2 / 2014-12-16
|
6
|
+
|
7
|
+
* Added {Tree::TreeNode#rename} and {Tree::TreeNode#rename_child} methods by
|
8
|
+
merging in code from {https://github.com/evolve75/RubyTree/pull/35}. Thanks
|
9
|
+
to {http://github.com/packetmonkey Evan Sharp}.
|
10
|
+
|
5
11
|
=== 0.9.5pre / 2014-11-01
|
6
12
|
|
7
13
|
* Fixed {issue 13}[https://github.com/evolve75/RubyTree/issues/13] with the
|
data/README.md
CHANGED
@@ -211,6 +211,9 @@ A big thanks to the following contributors for helping improve **RubyTree**:
|
|
211
211
|
6. [Paul de Courcel](https://github.com/pdecourcel) for adding the
|
212
212
|
`postordered_each` method.
|
213
213
|
7. [Jen Hamon](http://www.github.com/jhamon) for adding the `from_hash` method.
|
214
|
+
8. [Evan Sharp](https://github.com/packetmonkey) for adding the `rename` and
|
215
|
+
`rename_child` methods.
|
216
|
+
|
214
217
|
|
215
218
|
## LICENSE: ##
|
216
219
|
|
data/TAGS
CHANGED
@@ -68,56 +68,59 @@ module Tree::Tree39,1838
|
|
68
68
|
lib/tree/version.rb,27
|
69
69
|
module Tree::Tree38,1723
|
70
70
|
|
71
|
-
lib/tree.rb,
|
71
|
+
lib/tree.rb,2947
|
72
72
|
module Tree::Tree48,2158
|
73
73
|
class TreeNode::Tree::TreeNode85,3731
|
74
|
-
attr_reader :name::Tree::TreeNode#name
|
75
|
-
attr_accessor :content::Tree::TreeNode#content
|
76
|
-
attr_reader :parent::Tree::TreeNode#parent
|
77
|
-
def root::Tree::TreeNode#root
|
78
|
-
def is_root?::Tree::TreeNode#is_root?
|
79
|
-
def has_content?::Tree::TreeNode#has_content?
|
80
|
-
def is_leaf?::Tree::TreeNode#is_leaf?
|
81
|
-
def parentage::Tree::TreeNode#parentage
|
82
|
-
def has_children?::Tree::TreeNode#has_children?
|
83
|
-
def initialize::Tree::TreeNode#Tree::TreeNode.new
|
84
|
-
def detached_copy::Tree::TreeNode#detached_copy
|
85
|
-
def detached_subtree_copy::Tree::TreeNode#detached_subtree_copy
|
86
|
-
alias :dup::Tree::TreeNode#dup
|
87
|
-
def marshal_dump::Tree::TreeNode#marshal_dump
|
88
|
-
def create_dump_rep::Tree::TreeNode#create_dump_rep
|
89
|
-
def marshal_load::Tree::TreeNode#marshal_load
|
90
|
-
def to_s::Tree::TreeNode#to_s
|
91
|
-
def <<::Tree::TreeNode#<<
|
92
|
-
def add::Tree::TreeNode#add
|
93
|
-
def insertion_range::Tree::TreeNode#insertion_range
|
94
|
-
def
|
95
|
-
def
|
96
|
-
def
|
97
|
-
def
|
98
|
-
def
|
99
|
-
def
|
100
|
-
def
|
101
|
-
def
|
102
|
-
def
|
103
|
-
def
|
104
|
-
def
|
105
|
-
def
|
106
|
-
def
|
107
|
-
def
|
108
|
-
def
|
109
|
-
def
|
110
|
-
def
|
111
|
-
def
|
112
|
-
def
|
113
|
-
def
|
114
|
-
def
|
115
|
-
def
|
116
|
-
def
|
117
|
-
def
|
118
|
-
def
|
119
|
-
def
|
120
|
-
def
|
74
|
+
attr_reader :name::Tree::TreeNode#name113,4634
|
75
|
+
attr_accessor :content::Tree::TreeNode#content120,4833
|
76
|
+
attr_reader :parent::Tree::TreeNode#parent124,4949
|
77
|
+
def root::Tree::TreeNode#root131,5161
|
78
|
+
def is_root?::Tree::TreeNode#is_root?142,5467
|
79
|
+
def has_content?::Tree::TreeNode#has_content?150,5650
|
80
|
+
def is_leaf?::Tree::TreeNode#is_leaf?161,5904
|
81
|
+
def parentage::Tree::TreeNode#parentage173,6279
|
82
|
+
def has_children?::Tree::TreeNode#has_children?191,6705
|
83
|
+
def initialize::Tree::TreeNode#Tree::TreeNode.new214,7531
|
84
|
+
def detached_copy::Tree::TreeNode#detached_copy232,8148
|
85
|
+
def detached_subtree_copy::Tree::TreeNode#detached_subtree_copy242,8434
|
86
|
+
alias :dup::Tree::TreeNode#dup251,8695
|
87
|
+
def marshal_dump::Tree::TreeNode#marshal_dump256,8873
|
88
|
+
def create_dump_rep::Tree::TreeNode#create_dump_rep262,9041
|
89
|
+
def marshal_load::Tree::TreeNode#marshal_load277,9579
|
90
|
+
def to_s::Tree::TreeNode#to_s302,10363
|
91
|
+
def <<::Tree::TreeNode#<<325,11134
|
92
|
+
def add::Tree::TreeNode#add360,12662
|
93
|
+
def insertion_range::Tree::TreeNode#insertion_range380,13624
|
94
|
+
def rename::Tree::TreeNode#rename394,13993
|
95
|
+
def rename_child::Tree::TreeNode#rename_child413,14502
|
96
|
+
def name=::Tree::TreeNode#name=426,14986
|
97
|
+
def replace!::Tree::TreeNode#replace!436,15333
|
98
|
+
def replace_with::Tree::TreeNode#replace_with450,15706
|
99
|
+
def remove!::Tree::TreeNode#remove!468,16438
|
100
|
+
def parent=::Tree::TreeNode#parent=483,16841
|
101
|
+
def remove_from_parent!::Tree::TreeNode#remove_from_parent!496,17234
|
102
|
+
def remove_all!::Tree::TreeNode#remove_all!507,17606
|
103
|
+
def set_as_root!::Tree::TreeNode#set_as_root!518,17835
|
104
|
+
def freeze_tree!::Tree::TreeNode#freeze_tree!528,18161
|
105
|
+
def []::Tree::TreeNode#[]568,19679
|
106
|
+
def each::Tree::TreeNode#each593,20646
|
107
|
+
def preordered_each::Tree::TreeNode#preordered_each621,21606
|
108
|
+
def postordered_each::Tree::TreeNode#postordered_each633,22018
|
109
|
+
def breadth_each::Tree::TreeNode#breadth_each669,23463
|
110
|
+
def children::Tree::TreeNode#children695,24416
|
111
|
+
def each_leaf::Tree::TreeNode#each_leaf716,25037
|
112
|
+
def first_child::Tree::TreeNode#first_child733,25459
|
113
|
+
def last_child::Tree::TreeNode#last_child741,25670
|
114
|
+
def first_sibling::Tree::TreeNode#first_sibling757,26117
|
115
|
+
def is_first_sibling?::Tree::TreeNode#is_first_sibling?767,26391
|
116
|
+
def last_sibling::Tree::TreeNode#last_sibling781,26807
|
117
|
+
def is_last_sibling?::Tree::TreeNode#is_last_sibling?791,27077
|
118
|
+
def siblings::Tree::TreeNode#siblings807,27630
|
119
|
+
def is_only_child?::Tree::TreeNode#is_only_child?826,28182
|
120
|
+
def next_sibling::Tree::TreeNode#next_sibling839,28585
|
121
|
+
def previous_sibling::Tree::TreeNode#previous_sibling855,29059
|
122
|
+
def <=>::Tree::TreeNode#<=>871,29570
|
123
|
+
def print_tree::Tree::TreeNode#print_tree881,29950
|
121
124
|
|
122
125
|
test/run_test.rb,0
|
123
126
|
|
@@ -159,7 +162,7 @@ module TestTree::TestTree39,1695
|
|
159
162
|
def test_fiber_for_recursion::TestTree::TestFiberAndThreadOnNode#test_fiber_for_recursion59,2260
|
160
163
|
def test_thread_for_recursion::TestTree::TestFiberAndThreadOnNode#test_thread_for_recursion73,2807
|
161
164
|
|
162
|
-
test/test_tree.rb,
|
165
|
+
test/test_tree.rb,6492
|
163
166
|
module TestTree::TestTree39,1725
|
164
167
|
class TestTreeNode::TestTree::TestTreeNode41,1777
|
165
168
|
def setup::TestTree::TestTreeNode#setup65,2610
|
@@ -240,3 +243,6 @@ module TestTree::TestTree39,1725
|
|
240
243
|
def setup_other_test_tree::TestTree::TestTreeNode#setup_other_test_tree1507,57927
|
241
244
|
def test_merge::TestTree::TestTreeNode#test_merge1535,58916
|
242
245
|
def test_merge_bang::TestTree::TestTreeNode#test_merge_bang1564,60354
|
246
|
+
def test_name_accessor::TestTree::TestTreeNode#test_name_accessor1589,61441
|
247
|
+
def test_rename::TestTree::TestTreeNode#test_rename1597,61657
|
248
|
+
def test_rename_child::TestTree::TestTreeNode#test_rename_child1608,62028
|
data/lib/tree.rb
CHANGED
@@ -105,7 +105,11 @@ module Tree
|
|
105
105
|
# retain unique names within the tree structure, and use the
|
106
106
|
# +content+ attribute for any non-unique node requirements.
|
107
107
|
#
|
108
|
+
# If you want to change the name, you probably want to call +rename+
|
109
|
+
# instead.
|
110
|
+
#
|
108
111
|
# @see content
|
112
|
+
# @see rename
|
109
113
|
attr_reader :name
|
110
114
|
|
111
115
|
# @!attribute [rw] content
|
@@ -381,6 +385,47 @@ module Tree
|
|
381
385
|
|
382
386
|
private :insertion_range
|
383
387
|
|
388
|
+
# Renames the node and updates the parent's reference to it
|
389
|
+
#
|
390
|
+
# @param [Object] new_name Name of the node. Conventional usage is to pass a String
|
391
|
+
# (Integer names may cause *surprises*)
|
392
|
+
#
|
393
|
+
# @return [Object] The old name
|
394
|
+
def rename(new_name)
|
395
|
+
old_name = @name
|
396
|
+
|
397
|
+
if is_root?
|
398
|
+
self.name=(new_name)
|
399
|
+
else
|
400
|
+
@parent.rename_child old_name, new_name
|
401
|
+
end
|
402
|
+
|
403
|
+
old_name
|
404
|
+
end
|
405
|
+
|
406
|
+
# Renames the specified child node
|
407
|
+
#
|
408
|
+
# @param [Object] old_name old Name of the node. Conventional usage is to pass
|
409
|
+
# a String (Integer names may cause *surprises*)
|
410
|
+
#
|
411
|
+
# @param [Object] new_name new Name of the node. Conventional usage is to pass
|
412
|
+
# a String (Integer names may cause *surprises*)
|
413
|
+
def rename_child(old_name, new_name)
|
414
|
+
raise ArgumentError, "Invalid child name specified: " + old_name unless @children_hash.has_key?(old_name)
|
415
|
+
|
416
|
+
@children_hash[new_name] = @children_hash.delete(old_name)
|
417
|
+
@children_hash[new_name].name=(new_name)
|
418
|
+
end
|
419
|
+
|
420
|
+
# Protected method to set the name of this node.
|
421
|
+
# This method should *NOT* be invoked by client code.
|
422
|
+
#
|
423
|
+
# @param [Object] new_name The node Name to set.
|
424
|
+
#
|
425
|
+
# @return [Object] The new name.
|
426
|
+
def name=(new_name)
|
427
|
+
@name = new_name
|
428
|
+
end
|
384
429
|
|
385
430
|
# Replaces the specified child node with another child node on this node.
|
386
431
|
#
|
@@ -439,7 +484,7 @@ module Tree
|
|
439
484
|
@parent = parent
|
440
485
|
end
|
441
486
|
|
442
|
-
protected :parent=
|
487
|
+
protected :parent=, :name=
|
443
488
|
|
444
489
|
# Removes this node from its parent. This node becomes the new root for its subtree.
|
445
490
|
#
|
data/lib/tree/version.rb
CHANGED
data/test/test_tree.rb
CHANGED
@@ -1586,6 +1586,34 @@ module TestTree
|
|
1586
1586
|
assert_raise(TypeError) { @root.merge!('ROOT') }
|
1587
1587
|
end
|
1588
1588
|
|
1589
|
+
def test_name_accessor
|
1590
|
+
setup_test_tree
|
1591
|
+
|
1592
|
+
assert_equal 'ROOT', @root.name, "Name should be 'ROOT'"
|
1593
|
+
|
1594
|
+
end
|
1595
|
+
|
1596
|
+
def test_rename
|
1597
|
+
setup_test_tree
|
1598
|
+
|
1599
|
+
@root.rename 'ALT_ROOT'
|
1600
|
+
assert_equal('ALT_ROOT', @root.name, "Name should be 'ALT_ROOT'")
|
1601
|
+
|
1602
|
+
@child1.rename 'ALT_Child1'
|
1603
|
+
assert_equal('ALT_Child1', @child1.name, "Name should be 'ALT_Child1'")
|
1604
|
+
assert_equal(@child1, @root['ALT_Child1'], 'Should be able to access from parent using new name')
|
1605
|
+
end
|
1606
|
+
|
1607
|
+
def test_rename_child
|
1608
|
+
setup_test_tree
|
1609
|
+
|
1610
|
+
assert_raise(ArgumentError) {@root.rename_child('Not_Present_Child1', 'ALT_Child1')}
|
1611
|
+
|
1612
|
+
@root.rename_child('Child1', 'ALT_Child1')
|
1613
|
+
assert_equal('ALT_Child1', @child1.name, "Name should be 'ALT_Child1'")
|
1614
|
+
assert_equal(@child1, @root['ALT_Child1'], 'Should be able to access from parent using new name')
|
1615
|
+
|
1616
|
+
end
|
1589
1617
|
end
|
1590
1618
|
end
|
1591
1619
|
|