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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 93e0fdbd846f7fada7cd50d0e0ab414834f464dc
4
- data.tar.gz: 3e70254cbc163580c3b7e40a497292a8e4d15128
3
+ metadata.gz: 3228b0b44776c265981c6e870b806eac361f8adf
4
+ data.tar.gz: 310b261873bc3d2ba5ad1e45e5f56145bc02d6f8
5
5
  SHA512:
6
- metadata.gz: 957a7cdbb556f41f9c599f82483f058e72cf432837a73bf71d1c86a26c0a3f1c2e1d3a8706a419d1c057b46920215ba2b9046bd83f10720efe46f3bb29bb2486
7
- data.tar.gz: e74fb819ae9e568a1d5409f98ae89c18e0bd85f98300df7cc272dbfa9a7c4f01aa1d9474a8bc7fbb0f334019e3b045e2313621f16b2276aaf206bec24f241c6e
6
+ metadata.gz: 65f56e0e2848d8f3756ed0225beb92dc055200f1b94e7c376a5593253c844966634e38362b1aedf82160434878985c27ded1805da419d5b508ad309db8ec4ae3
7
+ data.tar.gz: 38777f6bf8ed9164df5f740e01120640f1df2f4cb26156795c0e8dc884e4d7fd8a881bf7400e3ab1d24fca0ea49cb1f6ae371ba2726ee37283dc6f9d87111513
@@ -1,30 +1,28 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rubytree (0.9.5pre)
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.1)
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
- netrc (0.8.0)
22
- rake (10.3.2)
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.2)
26
- mime-types (>= 1.16, < 3.0)
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.3.0)
38
- tins (~> 1.0)
39
- thor (0.19.1)
40
- tins (1.3.3)
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
@@ -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,2790
71
+ lib/tree.rb,2947
72
72
  module Tree::Tree48,2158
73
73
  class TreeNode::Tree::TreeNode85,3731
74
- attr_reader :name::Tree::TreeNode#name109,4522
75
- attr_accessor :content::Tree::TreeNode#content116,4721
76
- attr_reader :parent::Tree::TreeNode#parent120,4837
77
- def root::Tree::TreeNode#root127,5049
78
- def is_root?::Tree::TreeNode#is_root?138,5355
79
- def has_content?::Tree::TreeNode#has_content?146,5538
80
- def is_leaf?::Tree::TreeNode#is_leaf?157,5792
81
- def parentage::Tree::TreeNode#parentage169,6167
82
- def has_children?::Tree::TreeNode#has_children?187,6593
83
- def initialize::Tree::TreeNode#Tree::TreeNode.new210,7419
84
- def detached_copy::Tree::TreeNode#detached_copy228,8036
85
- def detached_subtree_copy::Tree::TreeNode#detached_subtree_copy238,8322
86
- alias :dup::Tree::TreeNode#dup247,8583
87
- def marshal_dump::Tree::TreeNode#marshal_dump252,8761
88
- def create_dump_rep::Tree::TreeNode#create_dump_rep258,8929
89
- def marshal_load::Tree::TreeNode#marshal_load273,9467
90
- def to_s::Tree::TreeNode#to_s298,10251
91
- def <<::Tree::TreeNode#<<321,11022
92
- def add::Tree::TreeNode#add356,12550
93
- def insertion_range::Tree::TreeNode#insertion_range376,13512
94
- def replace!::Tree::TreeNode#replace!391,13930
95
- def replace_with::Tree::TreeNode#replace_with405,14303
96
- def remove!::Tree::TreeNode#remove!423,15035
97
- def parent=::Tree::TreeNode#parent=438,15438
98
- def remove_from_parent!::Tree::TreeNode#remove_from_parent!451,15823
99
- def remove_all!::Tree::TreeNode#remove_all!462,16195
100
- def set_as_root!::Tree::TreeNode#set_as_root!473,16424
101
- def freeze_tree!::Tree::TreeNode#freeze_tree!483,16750
102
- def []::Tree::TreeNode#[]523,18268
103
- def each::Tree::TreeNode#each548,19235
104
- def preordered_each::Tree::TreeNode#preordered_each576,20195
105
- def postordered_each::Tree::TreeNode#postordered_each588,20607
106
- def breadth_each::Tree::TreeNode#breadth_each624,22052
107
- def children::Tree::TreeNode#children650,23005
108
- def each_leaf::Tree::TreeNode#each_leaf671,23626
109
- def first_child::Tree::TreeNode#first_child688,24048
110
- def last_child::Tree::TreeNode#last_child696,24259
111
- def first_sibling::Tree::TreeNode#first_sibling712,24706
112
- def is_first_sibling?::Tree::TreeNode#is_first_sibling?722,24980
113
- def last_sibling::Tree::TreeNode#last_sibling736,25396
114
- def is_last_sibling?::Tree::TreeNode#is_last_sibling?746,25666
115
- def siblings::Tree::TreeNode#siblings762,26219
116
- def is_only_child?::Tree::TreeNode#is_only_child?781,26771
117
- def next_sibling::Tree::TreeNode#next_sibling794,27174
118
- def previous_sibling::Tree::TreeNode#previous_sibling810,27648
119
- def <=>::Tree::TreeNode#<=>826,28159
120
- def print_tree::Tree::TreeNode#print_tree836,28539
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,6262
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
@@ -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
  #
@@ -37,5 +37,5 @@
37
37
  #
38
38
  module Tree
39
39
  # Rubytree Package Version
40
- VERSION = '0.9.5pre'
40
+ VERSION = '0.9.5pre2'
41
41
  end
@@ -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
 
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.5pre
4
+ version: 0.9.5pre2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anupam Sengupta