Make method generators extensible
[gitmo/Mouse.git] / lib / Mouse / Meta / Method / Constructor.pm
index 315051f..c2bcc51 100644 (file)
@@ -1,6 +1,11 @@
 package Mouse::Meta::Method::Constructor;
 use Mouse::Util; # enables strict and warnings
 
+sub _inline_slot{
+    my(undef, $self_var, $attr_name) = @_;
+    return sprintf '%s->{q{%s}}', $self_var, $attr_name;
+}
+
 sub _generate_constructor {
     my ($class, $metaclass, $args) = @_;
 
@@ -42,7 +47,7 @@ sub _generate_constructor {
 }
 
 sub _generate_processattrs {
-    my ($class, $metaclass, $attrs) = @_;
+    my ($method_class, $metaclass, $attrs) = @_;
     my @res;
 
     my $has_triggers;
@@ -57,7 +62,7 @@ sub _generate_processattrs {
         my $type_constraint = $attr->type_constraint;
         my $need_coercion;
 
-        my $instance_slot  = "\$instance->{q{$key}}";
+        my $instance_slot  = $method_class->_inline_slot('$instance', $key);
         my $attr_var       = "\$attrs[$index]";
         my $constraint_var;
 
@@ -184,3 +189,17 @@ sub _generate_BUILDALL {
 
 1;
 __END__
+
+=head1 NAME
+
+Mouse::Meta::Method::Constructor - A Mouse method generator for constructors
+
+=head1 VERSION
+
+This document describes Mouse version 0.40
+
+=head1 SEE ALSO
+
+L<Moose::Meta::Method::Constructor>
+
+=cut