[libclass-tiny-perl] 09/11: Document using BUILD for required attribute checks

gregor herrmann gregoa at debian.org
Sun May 31 14:03:53 UTC 2015


This is an automated email from the git hooks/post-receive script.

gregoa pushed a commit to annotated tag release-1.000
in repository libclass-tiny-perl.

commit 1a3417d88c7b448003b95123bda6319efb645fd1
Author: David Golden <dagolden at cpan.org>
Date:   Tue Jul 15 20:35:50 2014 -0400

    Document using BUILD for required attribute checks
    
    Fixes #14
---
 lib/Class/Tiny.pm | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/lib/Class/Tiny.pm b/lib/Class/Tiny.pm
index 6e99e2a..c45a481 100644
--- a/lib/Class/Tiny.pm
+++ b/lib/Class/Tiny.pm
@@ -337,13 +337,19 @@ by the constructor from the furthest parent class down to the child class after
 the object has been created.
 
 It is passed the constructor arguments as a hash reference.  The return value
-is ignored.  Use C<BUILD> for validation or setting default values that
-depend on other attributes.
+is ignored.  Use C<BUILD> for validation, checking required attributes or
+setting default values that depend on other attributes.
 
     sub BUILD {
         my ($self, $args) = @_;
-        $self->msg( "Hello " . $self->name );
+
+        for my $req ( qw/name age/ ) {
+            croak "$req attribute required" unless defined $self->$req;
+        }
+
         croak "Age must be non-negative" if $self->age < 0;
+
+        $self->msg( "Hello " . $self->name );
     }
 
 The argument reference is a copy, so deleting elements won't affect data in the

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libclass-tiny-perl.git



More information about the Pkg-perl-cvs-commits mailing list