-
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.
-
A major release with significant modernization to the code base and removal of legacy cruft, thanks to jmortlock.
-
The long deprecated
Tree::TreeNode#depth
method has finally been removed. Use Tree::TreeNode#node_depth instead. -
Support for
CamelCase
methods 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
rbx
Ruby 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.
- A minor maintenance version to address a minor but annoying warning for circular dependencies.
-
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 https://rubygems.org.
-
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.x
or higher.
-
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 returnsnil
if the object being compared to is itselfnil
or not another Tree::TreeNode.
- Released
0.9.6
, which is identical to0.9.5
, except for an update to the gem's release date.
- Released
0.9.5
.
- Added new methods for getting the path of a node as a
string
. These have been added as a newmixin
Tree::Utils::TreePathHandler. Thanks to Marco.
- 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.
- Added performance improvements to Tree::TreeNode#is_root? and Tree::Utils::TreeMetricsHandler#node_depth. Thanks to Aidan Steel.
- Minor fix to correct the release date. This release is otherwise identical
to
0.9.5pre2
.
- Added Tree::TreeNode#rename and Tree::TreeNode#rename_child methods by merging in code from pr-35. Thanks to Evan Sharp.
-
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.
- Changed all references to http://rubyforge.org.
- Fixed the issue with globally unique node names. See bug-24.
-
Yanked
R0.9.1
as theHistory.rdoc
file was not updated. -
Updated the gem description.
-
Changed the travis-ci build to include
coverall
support.
-
Updated the gem description.
-
Incorporated code coverage using the
coverall
gem.
This is a feature and bug-fix release.
-
Rubytree now supports
postordered
traversal via the Tree::TreeNode#postordered_each method. Thanks to Paul de Courcel for this. -
The Binary tree now supports
inorder
traversal 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.
-
(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.
- Tree::TreeNode#each,
- [Tree::TreeNode#preordered_each][preordered_each],
- Tree::TreeNode#postordered_each and
- Tree::TreeNode#breadth_each.
-
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
Rakefile
changes.
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'
JSON
encoding, 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
integers
as 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
nil
earlier).
- Minor bug-fix release to address bug-1215 (Tree::TreeNode#to_s
breaks if
@content
or@parent.name
is not a string).
-
This is the public release of
R0.8.0
, with additional bug-fixes. Note thatR0.8.0
will not be released separately as a publicly available Rubygem. All changes as listed forR0.8.0
are available in this release. -
The main change in
R0.8.0
/R0.8.1
is conversion of allCamelCase
method names tosnake_case
. The oldCamelCase
method 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
Binarytree
implementation. -
Minor code re-factoring driven by the code-smell checks using reek.
-
Inclusion of the
reek
code-smell detection tool in theRakefile
.
-
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
CamelCase
method names to the canonicalruby_method_names
(underscore separated). TheCamelCase
methods can still be invoked, but will throw a Deprecated Warning. The support for oldCamelCase
methods will go away some time in the future, so the user is advised to convert all current method invocations to the new names.
-
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#is_only_child?,
- Tree::TreeNode#next_sibling,
- Tree::TreeNode#previous_sibling and
- Tree::TreeNode#remove! methods.
-
Removed the
ChangeLog
file as this can now be generated from the git logs. -
Other minor code cleanup.
- Updated the documentation.
- Changed the hard-dependency on the [structured_warnings][] gem to a
soft-dependency - which lets
RubyTree
still 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.
-
Fixed bug-22535 where the
Tree::TreeNode#depth
method was actually returningheight+1
(not thedepth
). -
Marked the
Tree::TreeNode#depth
method as deprecated (and introduced the run-time dependency on the structured-warnings gem).
- Cleanup of the build system to exclusively use Hoe.
- Modifications and reformatting to the documentation.
- No user visible changes.
- Added more test cases and enabled ZenTest compatibility for the test case names.
- Minor code refactoring.
- Fixed the marshalling code to correctly handle non-string content.
- Changes to the build mechanism (now uses Hoe).
- Minor code refactoring. Changes in the
Rakefile
.