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