Add empty possible value to Object::Enum values
[dbsrgits/DBIx-Class-InflateColumn-Object-Enum.git] / lib / DBIx / Class / InflateColumn / Object / Enum.pm
index 2f3aaa8..47040e3 100644 (file)
@@ -2,7 +2,6 @@ package DBIx::Class::InflateColumn::Object::Enum;
 
 use warnings;
 use strict;
-use self;
 use Carp qw/croak confess/;
 use Object::Enum;
 
@@ -16,7 +15,9 @@ Version 0.03
 
 =cut
 
-our $VERSION = '0.03';
+# Dist::Zill should handle this now
+# ABSTRACT:  Allows a DBIx::Class user to define a Object::Enum column
+#our $VERSION = '0.04';
 
 
 =head1 SYNOPSIS
@@ -75,9 +76,10 @@ Users do not call this directly!
 =cut
 
 sub register_column {
-    my ($column, $info) = args;
+    my $self = shift;
+    my ($column, $info) = @_;
     
-    self->next::method(args);
+    $self->next::method(@_);
     
     return unless defined $info->{is_enum} and $info->{is_enum};
     
@@ -93,18 +95,21 @@ sub register_column {
     
     my $values = $info->{extra}->{list};
     my %values = map {$_=>1} @{$values};
-    
-    if ( defined($info->{default_value}) && !exists $values{$info->{default_value}}) {
-        push(@{$values},$info->{default_value});
-        $values->{$info->{default_value}} = 1;
-    }
-    
-    self->inflate_column(
+
+    push(@{$values},$info->{default_value})
+        if defined($info->{default_value})
+        && !exists $values{$info->{default_value}};
+
+    push(@{$values}, undef)
+        if defined($info->{is_nullable})
+        && $info->{is_nullable};
+
+    $self->inflate_column(
         $column => {
             inflate => sub {
                 my $val = shift;
                 my $e = Object::Enum->new({values=>$values});
-                $e->value($val) if $val and exists $values{$val};
+                $e->value($val);
                 return $e;
             },
             deflate => sub {