rubytree 0.9.5pre2 → 0.9.5pre4

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: 3228b0b44776c265981c6e870b806eac361f8adf
4
- data.tar.gz: 310b261873bc3d2ba5ad1e45e5f56145bc02d6f8
3
+ metadata.gz: 0a006133c7e37526b79f4256d041a29af0f34b04
4
+ data.tar.gz: 88eae77ba40ffc4a7a4e1e84bad59f25c3de0f91
5
5
  SHA512:
6
- metadata.gz: 65f56e0e2848d8f3756ed0225beb92dc055200f1b94e7c376a5593253c844966634e38362b1aedf82160434878985c27ded1805da419d5b508ad309db8ec4ae3
7
- data.tar.gz: 38777f6bf8ed9164df5f740e01120640f1df2f4cb26156795c0e8dc884e4d7fd8a881bf7400e3ab1d24fca0ea49cb1f6ae371ba2726ee37283dc6f9d87111513
6
+ metadata.gz: f951cea5ef06e9419b19e17d07c821e6b8c09dd57cd6eafe0e2cee60e9d1293ae645165f2f66e90a7577536fef3ed2e5f8d1441dca9cd934c4bf6816e8e245a0
7
+ data.tar.gz: 5a6ae6fb1df04a15dbf11b8293a2e566482d0372af299b49c4c33778a50c1b2f159feb9606422ec1c539ca17594122fb954d08712cd01ce40c25f9cb06f0f7d1
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rubytree (0.9.5pre2)
4
+ rubytree (0.9.5pre4)
5
5
  json (~> 1.8)
6
6
  structured_warnings (~> 0.1)
7
7
 
data/History.rdoc CHANGED
@@ -2,11 +2,21 @@
2
2
 
3
3
  = History of Changes
4
4
 
5
+ === 0.9.5pre4 / 2014-12-17
6
+
7
+ * Added performance improvements to {Tree::TreeNode#is_root?} and
8
+ {Tree::TreeNode#node_depth}. Thanks to {https://github.com/aidansteele Aidan Steel}.
9
+
10
+ === 0.9.5pre3 / 2014-12-16
11
+
12
+ * Minor fix to correct the release date. This release is otherwise identical to
13
+ 0.9.5pre2.
14
+
5
15
  === 0.9.5pre2 / 2014-12-16
6
16
 
7
17
  * 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}.
18
+ merging in code from {https://github.com/evolve75/RubyTree/pull/35}. Thanks to
19
+ {http://github.com/packetmonkey Evan Sharp}.
10
20
 
11
21
  === 0.9.5pre / 2014-11-01
12
22
 
data/README.md CHANGED
@@ -213,6 +213,8 @@ A big thanks to the following contributors for helping improve **RubyTree**:
213
213
  7. [Jen Hamon](http://www.github.com/jhamon) for adding the `from_hash` method.
214
214
  8. [Evan Sharp](https://github.com/packetmonkey) for adding the `rename` and
215
215
  `rename_child` methods.
216
+ 9. [Aidan Steele](https://github.com/aidansteele) for performance improvements
217
+ to `is_root?` and `node_depth`.
216
218
 
217
219
 
218
220
  ## LICENSE: ##
data/TODO.org CHANGED
@@ -187,6 +187,10 @@
187
187
 
188
188
 
189
189
  * R0.9.5
190
+ ** DONE Check the lazy initialization of =@node_depth= and changes in parent nodes :ARCHIVE:
191
+ CLOSED: [2014-12-18 Thu 11:05]
192
+ ** DONE Pull the performance improvements from Aidan [[Pull:37][#37]] :ARCHIVE:
193
+ CLOSED: [2014-12-18 Thu 10:27]
190
194
  ** DONE Pull the =hash= converter code from [[https://github.com/markthomas/RubyTree/commits/master][Mark Thomas]] ([[Issue:13][Issue #13]]). :ARCHIVE:
191
195
  CLOSED: [2014-11-01 Sat 20:10]
192
196
  This was contributed by @jhamon.
data/lib/tree.rb CHANGED
@@ -140,7 +140,7 @@ module Tree
140
140
  #
141
141
  # @return [Boolean] +true+ if this is a root node.
142
142
  def is_root?
143
- @parent == nil
143
+ @parent.nil?
144
144
  end
145
145
 
146
146
  # @!attribute [r] has_content?
@@ -360,7 +360,7 @@ module Tree
360
360
  def add(child, at_index = -1)
361
361
  raise ArgumentError, "Attempting to add a nil node" unless child # Only handles the immediate child scenario
362
362
  raise ArgumentError, "Attempting add node to itself" if self.equal?(child)
363
- raise ArgumentError, "Attempting add root as a child" if self.equal?(root) unless self.is_root?
363
+ raise ArgumentError, "Attempting add root as a child" if child.equal?(root)
364
364
 
365
365
  # Lazy mans unique test, won't test if children of child are unique in this tree too.
366
366
  raise "Child #{child.name} already added!" if @children_hash.include?(child.name)
@@ -482,6 +482,7 @@ module Tree
482
482
  # @return [Tree::TreeNode] The parent node.
483
483
  def parent=(parent) # :nodoc:
484
484
  @parent = parent
485
+ @node_depth = nil
485
486
  end
486
487
 
487
488
  protected :parent=, :name=
@@ -516,7 +517,7 @@ module Tree
516
517
  #
517
518
  # @return +nil+.
518
519
  def set_as_root! # :nodoc:
519
- @parent = nil
520
+ self.parent = nil
520
521
  end
521
522
 
522
523
  protected :set_as_root!
@@ -94,8 +94,7 @@ module Tree::Utils
94
94
  #
95
95
  # @return [Integer] Depth of this node.
96
96
  def node_depth
97
- return 0 if is_root?
98
- 1 + parent.node_depth
97
+ @node_depth ||= is_root? ? 0 : (1 + parent.node_depth)
99
98
  end
100
99
 
101
100
  # @!attribute [r] level
data/lib/tree/version.rb CHANGED
@@ -37,5 +37,5 @@
37
37
  #
38
38
  module Tree
39
39
  # Rubytree Package Version
40
- VERSION = '0.9.5pre2'
40
+ VERSION = '0.9.5pre4'
41
41
  end
data/test/test_tree.rb CHANGED
@@ -1470,11 +1470,7 @@ module TestTree
1470
1470
 
1471
1471
  # And now a scenario where the node addition is done down the hierarchy
1472
1472
  child = Tree::TreeNode.new("child")
1473
- begin
1474
- root << child << root
1475
- rescue ArgumentError => e
1476
- fail("The ArgumentError should not have been raised.")
1477
- end
1473
+ assert_raise(ArgumentError) { root << child << root }
1478
1474
  end
1479
1475
 
1480
1476
  # Test whether the tree_leaf method works correctly
@@ -1614,6 +1610,35 @@ module TestTree
1614
1610
  assert_equal(@child1, @root['ALT_Child1'], 'Should be able to access from parent using new name')
1615
1611
 
1616
1612
  end
1613
+
1614
+ def test_change_parent
1615
+ root_node = Tree::TreeNode.new("OLDROOT")
1616
+
1617
+ child_node = Tree::TreeNode.new("CHILD")
1618
+ assert_equal(child_node.node_depth, 0)
1619
+
1620
+ root_node << child_node
1621
+ assert_equal(root_node["CHILD"].name, "CHILD")
1622
+ assert_equal(root_node.node_depth, 0)
1623
+ assert_equal(child_node.node_depth, 1)
1624
+
1625
+ grandchild_node = Tree::TreeNode.new("GRANDCHILD")
1626
+ child_node << grandchild_node
1627
+ assert_equal(root_node["CHILD"]["GRANDCHILD"].name, "GRANDCHILD")
1628
+ assert_equal(root_node.node_depth, 0)
1629
+ assert_equal(child_node.node_depth, 1)
1630
+ assert_equal(grandchild_node.node_depth, 2)
1631
+
1632
+ root2_node = Tree::TreeNode.new("NEWROOT")
1633
+ assert_equal(root2_node.node_depth, 0)
1634
+
1635
+ # Move the grand child to a new root.
1636
+ root2_node << grandchild_node
1637
+ assert_equal(root2_node["GRANDCHILD"].name, "GRANDCHILD")
1638
+ assert_equal(grandchild_node.parent, root2_node)
1639
+ assert_equal(grandchild_node.node_depth, 1)
1640
+
1641
+ end
1617
1642
  end
1618
1643
  end
1619
1644
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubytree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.5pre2
4
+ version: 0.9.5pre4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anupam Sengupta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-01 00:00:00.000000000 Z
11
+ date: 2014-12-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: structured_warnings
@@ -186,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
186
186
  version: 1.3.1
187
187
  requirements: []
188
188
  rubyforge_project:
189
- rubygems_version: 2.2.2
189
+ rubygems_version: 2.4.3
190
190
  signing_key:
191
191
  specification_version: 4
192
192
  summary: A generic tree data structure.