MooseX::NestedAttributesConstructor - Create attributes from a nested data structure
package Address
use Moose;
has street => ( is => 'rw' );
has city => ( is => 'rw' );
# ...
package Person;
use Moose;
use MooseX::NestedAttributesConstructor
has name => ( is => 'rw' );
has addresses => ( is => 'rw',
isa => 'ArrayRef[Address]',
traits => ['NestedAttribute'] );
# ...
package main;
use Person;
my $p = Person->new(name => 'sshaw',
addresses => [
{ city => 'LA' },
{ city => 'Da Bay' },
{ city => 'Even São José' }
]);
say $_->city for @{$p->addresses};
This module sets attributes from a nested data structure passed your object's constructor. The appropriate types will be created, just add the NestedAttrubute
trait to attributes with a custom or parameterized type.
Nested attributes are turned into objects after BUILDARGS
is called.
Skye Shaw (skye.shaw AT gmail.com)
MooseX::StrictConstructor, MooseX::Types
Copyright (c) 2012 Skye Shaw.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.