---
name: "MooseX::Blessed::Reconstruct"
section: "3pm"
platform: "linux"
package: "libmoosex-blessed-reconstruct-perl"
version: "1.01-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/MooseX::Blessed::Reconstruct"
---

# MooseX::Blessed::Reconstruct(3pm)

A Data::Visitor for creating Moose objects from blessed placeholders

## NAME

MooseX::Blessed::Reconstruct - A Data::Visitor for creating Moose objects from blessed placeholders

## VERSION

version 1.01

## SYNOPSIS

```
        use MooseX::Blessed::Reconstruct;
        my $obj = bless( {
                init_arg_foo => "Blah",
                arf => "yay",
        }, "Foo" );
        my $proper = MooseX::Blessed::Reconstruct->new->visit($obj);
        # equivalent to:
        my $proper = Foo->meta->new_object(%$obj);
        # but recursive (and works with shared references)
```

## DESCRIPTION

The purpose of this module is to "fix up" blessed data into a real Moose object.

## METHODS

See Data::Visitor

### new

Constructor.

*arguments*

- load\_classes

  If `"true"` (which is the default), we will try to require its class  when the target object is `"visit"`ed.

### load\_classes

Read/write accessor to the `"load_classes"` attribute. If `"true"`, we try to require its class when a target object is `"visit"`ed.

### visit\_object $object

Calls "load\_class" in Class::MOP on the `"ref"` of `$object`.

If there's a metaclass, calls `"visit_object_with_meta"`, otherwise `"visit_ref"` is used to walk the object brutishly.

Returns a deep clone of the input structure with all the Moose objects reconstructed "properly".

### visit\_object\_with\_meta $obj, $meta

Uses the metaclass `$meta` to create a new instance, registers the instance with Data::Visitor's cycle tracking, and then inflates it using "new\_object" in Moose::Meta::Class.

### prepare\_args $obj

Collapses `$obj` into key value pairs to be used as init args to "new\_object" in Moose::Meta::Class.

## AUTHORS

- •

  Yuval Kogman \<nothingmuch@woobling.org\>

- •

  Jonathan Rockway \<jrockway@cpan.org\>

- •

  Yanick Champoux \<yanick@cpan.org\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2018, 2014 by Infinity Interactive, Yuval Kogman.

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