rubytree 0.9.5pre2 → 0.9.5pre4

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