# @markup rdoc
This file documents various API level changes that have been made to the RubyTree package.
Note: API level changes are expected to reduce dramatically after the 1.x release. In most cases, an alternative will be provided to ensure relatively smooth transition to the new APIs.
-
{Tree::TreeNode#siblings} will now return an empty array for the root node.
-
Added the ability to specify an optional insertion position in the {Tree::TreeNode#add} method. Idea and original code contributed by Dirk.
-
Added a new method {Tree::TreeNode#detached_subtree_copy} to allow cloning the entire tree. This method is also aliased to {Tree::TreeNode#dup}. Idea and original code contributed by Vincenzo Farruggia.
-
Converted all CamelCase method names to the canonical ruby_method_names (underscore separated). The CamelCase methods can still be invoked, but will throw a Deprecated warning.
-
Converted all exceptions thrown on invalid method arguments to from ‘RuntimeError’ to ‘ArgumentError’. This impacts the following methods:
-
{Tree::TreeNode#initialize}
-
{Tree::TreeNode#add}
-
{Tree::TreeNode#[]}
-
{Tree::BinaryTreeNode#add}
-
-
Added {Tree::TreeNode#level} as an alias for {Tree::TreeNode#node_depth}
-
Added new methods {Tree::TreeNode#in_degree} and {Tree::TreeNode#out_degree} to report the node’s degree stats
-
{Tree::TreeNode#is_only_child?} now returns
true
for a root node. -
{Tree::TreeNode#next_sibling} and {Tree::TreeNode#previous_sibling} now return
nil
for a root node. -
{Tree::TreeNode#add} and {Tree::TreeNode#<<} now throw an ArgumentError exception if a
nil
node is passed as an argument. -
Added new methods {Tree::TreeNode#to_json} and Tree::TreeNode::json_create to convert to/from the JSON format. Thanks to Dirk for this change.
-
Deprecated the {Tree::TreeNode#depth} method as it was returning an incorrect depth value. Have introduced a new replacement method {Tree::TreeNode#node_depth} which returns the correct result.
# Local Variables: # mode: rdoc # coding: utf-8-unix # End: