carried BUILDARGS in Person.pm from exercise 1 forward through the later answer class...
Robert Buels [Thu, 9 Jul 2009 19:01:19 +0000 (12:01 -0700)]
moose-class/exercises/answers/02-roles/Person.pm
moose-class/exercises/answers/03-basic-attributes/Person.pm
moose-class/exercises/answers/05-types/Person.pm
moose-class/exercises/answers/06-advanced-attributes/Person.pm

index e3b718a..ca3104a 100644 (file)
@@ -7,6 +7,20 @@ with 'Printable', 'HasAccount';
 has first_name => ( is => 'rw' );
 has last_name  => ( is => 'rw' );
 
+sub BUILDARGS {
+    my $class = shift;
+
+    if ( @_ == 1 && 'ARRAY' eq ref $_[0] ) {
+        return {
+            first_name => $_[0]->[0],
+            last_name  => $_[0]->[1],
+        };
+    }
+    else {
+        return $class->SUPER::BUILDARGS(@_);
+    }
+}
+
 sub full_name {
     my $self = shift;
 
index db69019..3a42949 100644 (file)
@@ -14,6 +14,20 @@ has first_name => ( is => 'rw' );
 
 has last_name  => ( is => 'rw' );
 
+sub BUILDARGS {
+    my $class = shift;
+
+    if ( @_ == 1 && 'ARRAY' eq ref $_[0] ) {
+        return {
+            first_name => $_[0]->[0],
+            last_name  => $_[0]->[1],
+        };
+    }
+    else {
+        return $class->SUPER::BUILDARGS(@_);
+    }
+}
+
 sub full_name {
     my $self = shift;
 
index c402db3..b906206 100644 (file)
@@ -21,6 +21,20 @@ has last_name => (
     isa => 'Str',
 );
 
+sub BUILDARGS {
+    my $class = shift;
+
+    if ( @_ == 1 && 'ARRAY' eq ref $_[0] ) {
+        return {
+            first_name => $_[0]->[0],
+            last_name  => $_[0]->[1],
+        };
+    }
+    else {
+        return $class->SUPER::BUILDARGS(@_);
+    }
+}
+
 sub full_name {
     my $self = shift;
 
index f9bb240..dd2914a 100644 (file)
@@ -28,6 +28,20 @@ sub BUILD {
     $self->account->owner($self);
 }
 
+sub BUILDARGS {
+    my $class = shift;
+
+    if ( @_ == 1 && 'ARRAY' eq ref $_[0] ) {
+        return {
+            first_name => $_[0]->[0],
+            last_name  => $_[0]->[1],
+        };
+    }
+    else {
+        return $class->SUPER::BUILDARGS(@_);
+    }
+}
+
 sub full_name {
     my $self = shift;