From: Yuval Kogman Date: Fri, 8 Aug 2008 22:37:36 +0000 (+0000) Subject: proper constructor for Immutable X-Git-Tag: 0_64_01~72 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=1ae8e21151c5bf7273648fc7e651b136cdd77464;p=gitmo%2FClass-MOP.git proper constructor for Immutable --- diff --git a/lib/Class/MOP/Immutable.pm b/lib/Class/MOP/Immutable.pm index bed881d..09ed6a5 100644 --- a/lib/Class/MOP/Immutable.pm +++ b/lib/Class/MOP/Immutable.pm @@ -15,8 +15,23 @@ our $AUTHORITY = 'cpan:STEVAN'; use base 'Class::MOP::Object'; sub new { - my ($class, $metaclass, $options) = @_; + my ($class, @args) = @_; + my ( $metaclass, $options ); + + if ( @args == 2 ) { + # compatibility args + ( $metaclass, $options ) = @args; + } else { + unshift @args, "metaclass" if @args % 2 == 1; + + # default named args + my %options = @args; + $options = \%options; + $metaclass = $options{metaclass}; + } + + # FIXME make a proper constructor using ->meta->new_object my $self = bless { 'metaclass' => $metaclass, 'options' => $options, @@ -26,6 +41,7 @@ sub new { # NOTE: # we initialize the immutable # version of the metaclass here + # FIXME lazify $self->create_immutable_metaclass; return $self;