---
name: "Forest::Tree::Builder"
section: "3pm"
platform: "linux"
package: "libforest-perl"
version: "0.10-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Forest::Tree::Builder"
---

# Forest::Tree::Builder(3pm)

An abstract role for bottom up tree reader

## NAME

Forest::Tree::Builder - An abstract role for bottom up tree reader

## SYNOPSIS

```
    package MyBuilder;
    use Moose;
    with qw(Forest::Tree::Builder);
    # implement required builder:
    sub _build_subtrees {
        return [
            $self->create_new_subtree( ... ), # probably a recursive process
        ];
    }
    my $builder = MyBuilder->new(
        tree_class => ...,
        ...
    );
    my $tree = $builder->tree;
```

## DESCRIPTION

Forest::Tree::Builder replaces Forest::Tree::Loader and Forest::Tree::Reader with a bottom up construction approach, which is also suitable for constructing Forest::Tree::Pure derived trees without excessive cloning.

It provides a declarative API instead of an imperative one, where `"tree"` is lazily constructed on the first use, instead of being constructed immediately and "filled in" by the `"load"` method.

## METHODS

- create\_new\_subtree

  Implemented by Forest::Tree::Constructor

- \_build\_tree

  Constructs a root node by using the top level `"subtrees"` list as the children.

- \_build\_subtrees

  Build the subtrees.

  Abstract method that should return an array ref of Forest::Tree::Pure derived objects.

## SEE ALSO

Forest::Tree::Builder::SimpleTextFile

## BUGS

All complex software has bugs lurking in it, and this module is no exception. If you find a bug please either email me, or add the bug to cpan-RT.

## AUTHOR

Yuval Kogman

## COPYRIGHT AND LICENSE

Copyright 2008-2014 Infinity Interactive, Inc.

\<http://www.iinteractive.com\>

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
