import 0.001
[gitmo/MooseX-InsideOut.git] / lib / MooseX / InsideOut / Meta / Class.pm
CommitLineData
64468268 1use strict;
2use warnings;
3
4package MooseX::InsideOut::Meta::Class;
5
6# need to load this before loading Moose and using it as a metaclass, because
7# of circularity
8use MooseX::InsideOut::Meta::Instance;
9use Moose;
10extends 'Moose::Meta::Class';
11
12sub initialize {
13 my $class = shift;
14 my $pkg = shift;
15 $class->SUPER::initialize(
16 $pkg,
17 instance_metaclass => 'MooseX::InsideOut::Meta::Instance',
18 @_,
19 );
20}
21
22# this seems like it should be part of Moose::Meta::Class
23sub construct_instance {
24 my ($class, %params) = @_;
25 my $meta_instance = $class->get_meta_instance;
26 my $instance = $params{'__INSTANCE__'}
27 || $meta_instance->create_instance();
28 foreach my $attr ($class->compute_all_applicable_attributes()) {
29 my $meta_instance = $attr->associated_class->get_meta_instance;
30 $attr->initialize_instance_slot($meta_instance, $instance, \%params);
31 }
32 return $instance;
33}
34
351;