blob: d60a99640ecd78b087d1c41f7db3da747d7df157 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
package MooseX::NonMoose;
use Moose ();
use Moose::Exporter;
Moose::Exporter->setup_import_methods(
with_caller => ['extends_nonmoose'],
);
sub extends_nonmoose {
my $caller = shift;
my @superclasses = (@_, 'Moose::Object');
Moose::extends($caller, @superclasses);
Class::MOP::Class->initialize($caller)->add_method(new => sub {
my $class = shift;
my $self = $class->SUPER::new(@_);
my $params = $class->BUILDARGS(@_);
my $moose_self = Class::MOP::Class->initialize($class)->new_object(
__INSTANCE__ => $self,
%$params,
);
$moose_self->BUILDALL($params);
return $moose_self;
});
}
1;
|