fix dbic helper fuckage
Rafael Kitover [Fri, 15 May 2009 15:47:33 +0000 (15:47 +0000)]
lib/Catalyst/Helper/Model/DBIC/Schema.pm
lib/Catalyst/Model/DBIC/Schema.pm
lib/Catalyst/Model/DBIC/Schema/Types.pm

index 8e0a437..b560900 100644 (file)
@@ -348,7 +348,12 @@ sub _parse_connect_info {
 
         my ($key, $val) = split /=/, $_, 2;
 
-        $connect_info{$key} = eval $val;
+        if ($key =~ /^(?:quote_char|name_sep)\z/) {
+            $connect_info{$key} = $val;
+        } else {
+            $connect_info{$key} = eval $val;
+        }
+
         die "syntax error for connect_info key '$key' with value '$val': $@"
             if $@;
     }
@@ -430,7 +435,9 @@ sub _cleanup_args {
     my ($self, $args) = @_;
 
 # remove blanks, ie. someoned doing foo \  bar
-    my @res = grep !/^\s*\z/, @$args;
+#    my @res = grep !/^\s*\z/, @$args;
+# bad idea.
+    my @res = @$args;
 
 # remove leading whitespace, ie. foo \ bar
     s/^\s*// for @res;
index 26485bc..41a8fd0 100644 (file)
@@ -15,6 +15,7 @@ use MooseX::ClassAttribute;
 use Moose::Autobox;
 
 use Catalyst::Model::DBIC::Schema::Types qw/ConnectInfo SchemaClass/;
+use MooseX::Types::Moose qw/ArrayRef Str ClassName/;
 
 use namespace::clean -except => 'meta';
 
@@ -387,17 +388,17 @@ has 'schema_class' => (
     required => 1
 );
 
-has 'storage_type' => (is => 'rw', isa => 'Str');
+has 'storage_type' => (is => 'rw', isa => Str);
 
 has 'connect_info' => (is => 'ro', isa => ConnectInfo, coerce => 1);
 
 # ref $self changes to anon after roles are applied, and _original_class_name is
 # broken in MX::O::P 0.0009
-has '_class_name' => (is => 'ro', isa => 'ClassName', default => sub {
+has '_class_name' => (is => 'ro', isa => ClassName, default => sub {
     ref shift
 });
 
-has 'model_name' => (is => 'ro', isa => 'Str', default => sub {
+has 'model_name' => (is => 'ro', isa => Str, default => sub {
     my $self = shift;
 
     my $class = ref $self;
@@ -406,7 +407,7 @@ has 'model_name' => (is => 'ro', isa => 'Str', default => sub {
     $model_name
 });
 
-has 'roles' => (is => 'ro', isa => 'ArrayRef|Str');
+has 'roles' => (is => 'ro', isa => ArrayRef|Str);
 
 sub BUILD {
     my $self = shift;
index f206ecd..9eb76a3 100644 (file)
@@ -1,7 +1,7 @@
 package Catalyst::Model::DBIC::Schema::Types;
 
 use MooseX::Types
-    -declare => [qw/ConnectInfo ConnectInfos Replicants SchemaClass/];
+ -declare => [qw/ConnectInfo ConnectInfos Replicants SchemaClass CursorClass/];
 
 use Carp::Clan '^Catalyst::Model::DBIC::Schema';
 use MooseX::Types::Moose qw/ArrayRef HashRef Str ClassName/;
@@ -17,6 +17,13 @@ coerce SchemaClass,
     from Str,
     via { Class::MOP::load_class($_); $_ };
 
+subtype CursorClass,
+    as ClassName;
+
+coerce CursorClass,
+    from Str,
+    via { Class::MOP::load_class($_); $_ };
+
 subtype ConnectInfo,
     as HashRef,
     where { exists $_->{dsn} },