This is an automated email from the git hooks/post-receive script. gregoa pushed a commit to annotated tag release-0.004 in repository libclass-tiny-perl.
commit 37540c751d8ca0a569ed6fb5abd60ac4538bca81 Author: David Golden <dagol...@cpan.org> Date: Tue Aug 20 17:07:46 2013 -0400 pass constructor arguments to BUILD --- README.pod | 10 ++++++---- lib/Class/Tiny.pm | 14 ++++++++------ 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/README.pod b/README.pod index 79f082d..8b41171 100644 --- a/README.pod +++ b/README.pod @@ -183,13 +183,15 @@ the reference provided. =head2 BUILD -If your class or any superclass defines a C<BUILD> method, they will be called +If your class or any superclass defines a C<BUILD> method, it will be called by the constructor from the furthest parent class down to the child class after -the object has been created. No arguments are provided and the return value is -ignored. Use them for validation or setting default values. +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. sub BUILD { - my $self = shift; + my ($self, $args) = @_; $self->foo(42) unless defined $self->foo; croak "Foo must be non-negative" if $self->foo < 0; } diff --git a/lib/Class/Tiny.pm b/lib/Class/Tiny.pm index 4089da5..8885ba3 100644 --- a/lib/Class/Tiny.pm +++ b/lib/Class/Tiny.pm @@ -76,11 +76,11 @@ sub new { } # create object and invoke BUILD - my $self = bless $args, $class; + my $self = bless { %$args }, $class; for my $s ( reverse @search ) { no strict 'refs'; my $builder = *{ $s . "::BUILD" }{CODE}; - $self->$builder if defined $builder; + $self->$builder($args) if defined $builder; } return $self; @@ -262,13 +262,15 @@ the reference provided. =head2 BUILD -If your class or any superclass defines a C<BUILD> method, they will be called +If your class or any superclass defines a C<BUILD> method, it will be called by the constructor from the furthest parent class down to the child class after -the object has been created. No arguments are provided and the return value is -ignored. Use them for validation or setting default values. +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. sub BUILD { - my $self = shift; + my ($self, $args) = @_; $self->foo(42) unless defined $self->foo; croak "Foo must be non-negative" if $self->foo < 0; } -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libclass-tiny-perl.git _______________________________________________ Pkg-perl-cvs-commits mailing list Pkg-perl-cvs-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits