History of Changes
2.1.1 / 2024-12-19
-
2.1.1 is a minor update that updates all dependencies and updates the guard clause for creating a tree from a hash.
2.1.0 / 2024-08-12
-
Minimum Ruby version has been bumped to 2.7. This is needed to use the upstream gems, many of which no longer support 2.6.
-
Updated all dependencies to their latest stable versions.
2.0.0 / 2022-06-21
-
A major release with significant modernization to the code base and removal of legacy cruft, thanks to jmortlock.
-
The long deprecated
Tree::TreeNode#depthmethod has finally been removed. Use Tree::TreeNode#node_depth instead. -
Support for
CamelCasemethods has been dropped. -
The predicate methods beginning with
is_orhas_are now aliases to real methods without these prefixes. For example,Tree::TreeNode#is_root?is now aliased toTree::TreeNode#root?. This is to comply with the Ruby standard. The original prefixed method names should be considered as deprecated and the corresponding non-prefixed method names should be used instead. it is possible that the old prefixed method names might be removed in the future. -
RubyTree now supports MRI Ruby versions
2.6.x,2.7.x, and3.0.x. -
Explicit support for
rbxRuby has been removed (might still work, but not tested.) -
RubyTree now uses Github Workflows for its CI pipeline.
-
RubyTree now allows proper sub-classing of Tree::TreeNode. Thanks to jack12816 for this.
-
RubyTree now correctly handles creating detached copies of un-clonable objects such as
:symbol,true|false, etc. Thanks to igneus for this.
1.0.2 / 2021-12-29
-
A minor maintenance version to address a minor but annoying warning for circular dependencies.
1.0.1 / 2021-12-29
-
Updated all dependencies (dev and runtime) to their latest stable releases. This is to primarily address potential CVE exposures from upstream libraries.
-
Updated the supported version of MRI Ruby to
2.7.x. -
Minor code cleanup using the safe automated corrections using
rubocop. -
Note that this was never released to rubygems.org.
1.0.0 / 2017-12-21
-
Finally! Released version
1.0.0. -
This is a maintenance release that updates the dependent gem versions and addresses a few security vulnerabilities for older upstream gem packages.
-
With this release, Rubytree now requires Ruby version
2.2.xor higher.
0.9.7 / 2015-12-31
-
Released
0.9.6. This is a minor bug-fix release. -
This release allows the Tree::TreeNode#print_tree method to be used on non-root nodes. Thanks to Ojab.
-
The spaceship operator (
<=>) now returnsnilif the object being compared to is itselfnilor not another Tree::TreeNode.
0.9.6 / 2015-05-30
-
Released
0.9.6, which is identical to0.9.5, except for an update to the gem’s release date.
0.9.5 / 2015-05-30
-
Released
0.9.5.
0.9.5pre7 / 2015-05-30
-
Added new methods for getting the path of a node as a
string. These have been added as a newmixin:Utils::TreePathHandler. Thanks to Marco.
0.9.5pre5 / 2015-01-01
-
Fixed bug-32 and enabled move semantics on the Tree::TreeNode#add method, so that if a child is added, which has an existing parent, then it will be removed from its old parent, prior to being added to the new location.
0.9.5pre4 / 2014-12-17
-
Added performance improvements to Tree::TreeNode#is_root? and Tree::Utils::TreeMetricsHandler#node_depth. Thanks to Aidan Steel.
0.9.5pre3 / 2014-12-16
-
Minor fix to correct the release date. This release is otherwise identical to
0.9.5pre2.
0.9.5pre2 / 2014-12-16
-
Added Tree::TreeNode#rename and Tree::TreeNode#rename_child methods by merging in code from pr-35. Thanks to Evan Sharp.
0.9.5pre / 2014-11-01
-
Fixed a bug in Tree::TreeNode#print_tree with the patch provided by Evan Sharp.
-
Fixed bug-31, which was causing incorrect behavior in Tree::TreeNode#postordered_each and Tree::TreeNode#breadth_each methods when a block was not provided.
0.9.4 / 2014-07-04
-
Changed all references to rubyforge.org.
0.9.3 / 2014-02-01
-
Fixed the issue with globally unique node names. See bug-24.
0.9.2 / 2014-01-03
-
Yanked
R0.9.1as theHistory.rdocfile was not updated. -
Updated the gem description.
-
Changed the travis-ci build to include
coverallsupport.
0.9.1 / 2014-01-03
-
Updated the gem description.
-
Incorporated code coverage using the
coverallgem.
0.9.0 / 2014-01-02
This is a feature and bug-fix release.
The Features
-
Rubytree now supports
postorderedtraversal via the Tree::TreeNode#postordered_each method. Thanks to Paul de Courcel for this. -
The Binary tree now supports
inordertraversal via the Tree::BinaryTreeNode#inordered_each method. -
Ability to merge in another tree at a chosen node, or merge two trees to create a third tree. Thanks to Darren Oakley for this pr-2.
-
RubyTree now mixes in the Comparable module.
The Fixes
-
(Partial) fix for preventing cyclic graphs in the tree.
-
Refactored the Tree::TreeNode#each method to prevent stack errors while navigating deep trees (bug-12).
-
Check to ensure that the added node's name is unique to the destination tree (pr-9). Thanks to Youssef Rebahi-Gilbert for the idea and the initial code.
-
Fix for bug-23, where the tree traversal on a binary tree would fail if the left child was
nil. -
The following traversal methods now correctly return an Enumerator as the return value when no block is given, and return the receiver node if a block was provided. This is consistent with how the standard Ruby collections work.
Other Changes
-
Structural changes in the code to refactor out the non-core functions into modules (mostly by extracting out non-core code as
mixins). -
Significant refactoring of the documentation. The Yard tags are now extensively used.
-
Basic support built-in for including example code in the gem. This will be fully expanded in the next release.
-
Various changes to the Bundler, travis-ci and other
Rakefilechanges.
0.8.3 / 2012-08-21
This is a primarily a bug-fix release, with some packaging changes.
-
Have removed the dependency on Hoe. The build is now based on vanilla gemspec.
-
Included support for gem-testers.
-
Included support for Bundler.
-
Implemented the Tree::Utils::JSONConverter#as_json method to support Rails'
JSONencoding, by pulling in the changes from Eric Cline. -
Partial fix for bug-5. This is to prevent infinite looping if an existing node is added again elsewhere in the tree.
-
Fixed the issue with using
integersas node names, and its interaction with theTree::TreeNode#[]access method as documented in bug-6. -
Clarified the need to have unique node names in the documentation (bug-7).
-
Fixed Tree::TreeNode#siblings method to return an empty array for the root node as well (it returned
nilearlier).
0.8.2 / 2011-12-15
-
Minor bug-fix release to address bug-1215 (Tree::TreeNode#to_s breaks if
@contentor@parent.nameis not a string).
0.8.1 / 2010-10-02
-
This is the public release of
R0.8.0, with additional bug-fixes. Note thatR0.8.0will not be released separately as a publicly available Rubygem. All changes as listed forR0.8.0are available in this release. -
The main change in
R0.8.0/R0.8.1is conversion of allCamelCasemethod names tosnake_case. The oldCamelCasemethod names will still work (to ensure backwards compatibility), but will also display a warning. -
The Tree::TreeNode#add method now accepts an optional child insertion point.
-
The sub-tree from the current node can now be cloned in its entirety using the Tree::TreeNode#detached_subtree_copy method.
-
A major bug-fix for bug-28613 which impacted the
Binarytreeimplementation. -
Minor code re-factoring driven by the code-smell checks using reek.
-
Inclusion of the
reekcode-smell detection tool in theRakefile.
0.8.0 / 2010-05-04
-
Updated the Tree::TreeNode#add method to allow the optional specification of an insertion position in the child array.
-
Added a new method Tree::TreeNode#detached_subtree_copy to allow cloning the entire tree (this method is also aliased as
dup). -
Converted all
CamelCasemethod names to the canonicalruby_method_names(underscore separated). TheCamelCasemethods can still be invoked, but will throw a Deprecated Warning. The support for oldCamelCasemethods will go away some time in the future, so the user is advised to convert all current method invocations to the new names.
0.7.0 / 2010-05-03
-
Added new methods to report the degree-statistics of a node.
-
Added a convenience method alias Tree::TreeNode#level to
nodeDepth. -
Converted the exceptions thrown on invalid arguments to ArgumentError instead of RuntimeError.
-
Converted the documentation to Yard format.
-
Added new methods for converting to/from JSON format. Thanks to Dirk Breuer for this fork.
-
Added a separate API-CHANGES.md documentation file.
-
Added fixes for root related edge conditions to the:
-
Tree::TreeNode#remove! methods.
-
Removed the
ChangeLogfile as this can now be generated from the git logs. -
Other minor code cleanup.
0.6.2 / 2010-01-30
-
Updated the documentation.
0.6.1 / 2010-01-04
-
Changed the hard-dependency on the [structured_warnings][] gem to a soft-dependency - which lets
RubyTreestill work if this gem is not available. The rationale for this is that we should not require the user to install a separate library just for one edge-case function (in this case, to indicate a deprecated method). However, if the library is available on the user’s system, then it will get used.
0.6.0 / 2010-01-03
-
Fixed bug-22535 where the
Tree::TreeNode#depthmethod was actually returningheight+1(not thedepth). -
Marked the
Tree::TreeNode#depthmethod as deprecated (and introduced the run-time dependency on the structured-warnings gem).
0.5.3 / 2009-12-31
-
Cleanup of the build system to exclusively use Hoe.
-
Modifications and reformatting to the documentation.
-
No user visible changes.
0.5.2 / 2007-12-21
-
Added more test cases and enabled ZenTest compatibility for the test case names.
0.5.1 / 2007-12-20
-
Minor code refactoring.
0.5.0 / 2007-12-18
-
Fixed the marshalling code to correctly handle non-string content.
0.4.3 / 2007-10-09
-
Changes to the build mechanism (now uses Hoe).
0.4.2 / 2007-10-01
-
Minor code refactoring. Changes in the
Rakefile.