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 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