Data::Grove::Parent(3pm)

Data::Grove::Parent3pm

Provide parent properties to data::grove objects

Usage

 use Data::Grove::Parent;
 $root = $object->root;
 $rootpath = $object->rootpath;
 $tied = $object->add_magic([ $parent ]);
 $node = Data::Grove::Parent->new($hash [, $parent]);
 $node_list = Data::Grove::ParentList->new($array [, $parent]);

Overview

Data::Grove::Parent is an extension to Data::Grove that adds `"Parent"' and `"Raw"' properties to Data::Grove objects and methods for returning the root node of a grove, a list of nodes between and including the root node and the current node, and a method that creates parented nodes.

Data::Grove::Parent works by creating a Perl ``tied'' object that contains a parent reference (`"Parent"') and a reference to the original Data::Grove object (`"Raw"'). Tying-magic is used so that every time you reference the Data::Grove::Parent object it actually references the underlying raw object.

When you retrieve a list or a property of the Raw object, Data::Grove::Parent automatically adds magic to the returned list or node. This means you only call `add_magic()' once to create the first Data::Grove::Parent object and then use the grove objects like you normally would.

The most obvious use of this is so you don't have to call a `"delete"' method when you want to release a grove or part of a grove; since Data::Grove and Data::Grove::Parent objects have no cyclic references, Perl can garbage collect them normally.

A secondary use is to allow you to reuse grove or property set fragments in multiple trees. WARNING: Data::Grove currently does not protect you from creating your own cyclic references! This could lead to infinite loops if you don't take care to avoid them.

Methods

$object->root()
$object->rootpath()

`root()' returns the root node if `$object' is a `"Data::Grove::Parent"' object. `rootpath()' returns an array of all the nodes between and including the root node and `$object'.

$tied = $object->add_magic([ $parent ])

`add_magic()' returns a "Data::Grove::Parent" object with `$object' as it's `"Raw"' object. If `$parent' is given, that becomes the tied object's parent object.

Releases

14 releases since Debian 2.2 (Potato); the text changed 7 times.

  1. 2.2
  2. 3.0
  3. 3.1–5.0
  4. 6.0–9
  5. 10
  6. 11
  7. 12–13
  8. Arch

Author

Ken MacLeod, [email protected]

From libxml-perl 0.08-9 in Arch Linux 2026-11-01. Parsed by carta from the page's man source.