package HTML::Element::Replacer;
# ABSTRACT: Simplify the HTML::Element clone() - push_content() ritual 
use HTML::TreeBuilder;
use HTML::Element::Library;

use Moose;

has 'tree' => ( is => 'rw', required => 1 ) ;
has 'elem' => ( is => 'rw', lazy => 1, default => sub { $_[0]->tree->look_down(@{$_[0]->look_down}) } ) ;
has 'elem_clone' => ( is => 'rw' ) ;
has 'look_down'   => ( is => 'rw', required => 1 ) ;
has 'replacements' => ( is => 'rw', isa => 'ArrayRef') ;

our $VERSION = '0.08';

sub BUILD {
    my($self)=@_;
    $self->replacements([]);
}

sub DESTROY {
    my($self)=@_;
    $self->elem->replace_with( @ { $self->replacements } ) ;
}

sub push_clone {

    my($self)=@_;

    my $clone = $self->elem->clone;
    push @{$self->replacements}, $clone;

    $clone;
}


1; # End of HTML::Element::Replacer