Code for forward compat with Moose 1.99+
[gitmo/MooseX-UndefTolerant.git] / lib / MooseX / UndefTolerant / Class.pm
diff --git a/lib/MooseX/UndefTolerant/Class.pm b/lib/MooseX/UndefTolerant/Class.pm
new file mode 100644 (file)
index 0000000..c8bd25c
--- /dev/null
@@ -0,0 +1,25 @@
+package MooseX::UndefTolerant::Class;
+use Moose::Role;
+
+if ( $Moose::VERSION >= 1.9900 ) {
+        around('_inline_init_attr_from_constructor', sub {
+                my $orig = shift;
+                my $self = shift;
+                my ($attr, $idx) = @_;
+
+                my @source = $self->$orig(@_);
+
+                my $init_arg = $attr->init_arg;
+
+                return
+                        "if ( exists \$params->{$init_arg} && defined \$params->{$init_arg} ) {",
+                                @source,
+                        '} else {',
+                               "delete \$params->{$init_arg};",
+                        '}';
+        });
+}
+
+no Moose::Role;
+
+1;