All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning and Keep a CHANGELOG.
- array-access operator and
fetch
onPath
for random access
- Lazy initialization of the internal hash. This improves extensibility, eg. by
not requiring asuper
call in the constructors ofTree
subclasses.
- support
Path
objects as input on the followingTree
methods:- the
Tree.[]
population constructor fetch
add
delete
replace
[]=
include_node?
leaf?
strict_leaf?
strict_leaves?
internal?
external?
- the
Tree#fetch_path
for fetching a child by path
Tree#add
orTree#delete
now fail without making any changes, when given invalid input. Previously these command methods performed their operations
until the invalid input elements were encountered.Tree#delete
deleted paths, when they matched a given input path partially, e.g.Tree[a: 1] >> a: {1 => 2}
deleted successfully.
- assigning
nil
viaTree#[]=
removes a child tree, similar to the assignment ofSycamore::Nothing
- #2: Rubinius support
- assigning
Sycamore::Nothing
viaTree#[]=
removes a child tree Tree#search
for searching the tree for one or multiple nodes or a treeTree#node!
as a more strict variant ofTree#node
, which raises an error when no node present
Initial release