X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FHelper%2FModel%2FDBIC%2FSchema.pm;h=8ba34a7ca02225c76c98283c0bd6a894a78e9c25;hb=f946a000d63b97c352690573ecbec336f49cf843;hp=5062ec1c8cdfa62d1100ecea984318dbde0b590e;hpb=f1b4a8fde8a23ab98178c8b78c43eb0c14f52130;p=catagits%2FCatalyst-Model-DBIC-Schema.git diff --git a/lib/Catalyst/Helper/Model/DBIC/Schema.pm b/lib/Catalyst/Helper/Model/DBIC/Schema.pm index 5062ec1..8ba34a7 100644 --- a/lib/Catalyst/Helper/Model/DBIC/Schema.pm +++ b/lib/Catalyst/Helper/Model/DBIC/Schema.pm @@ -4,7 +4,7 @@ use namespace::autoclean; use Moose; no warnings 'uninitialized'; -our $VERSION = '0.51'; +our $VERSION = '0.60'; $VERSION = eval $VERSION; use Carp; @@ -311,15 +311,33 @@ sub _read_loader_args { $i += 2; } - while (defined $args->[$i]) { - my ($key, $val) = split /=/, $args->[$i++], 2; + my $have_loader = try { + Class::MOP::load_class('DBIx::Class::Schema::Loader::Base'); + 1; + }; - if ($self->_is_struct($val)) { - $loader_args{$key} = $val; - } elsif ((my @vals = split /,/ => $val) > 1) { - $loader_args{$key} = \@vals; - } else { - $loader_args{$key} = $val; + if ($have_loader) { + while (defined $args->[$i]) { + $i++ while $self->_is_struct($args->[$i]); + + last if not defined $args->[$i]; + + my ($key, $val) = split /=/, $args->[$i], 2; + + if (not DBIx::Class::Schema::Loader::Base->can($key)) { + $i++; + next; + } + + if ($self->_is_struct($val)) { + $loader_args{$key} = $val; + } elsif ((my @vals = split /,/ => $val) > 1) { + $loader_args{$key} = \@vals; + } else { + $loader_args{$key} = $val; + } + + splice @$args, $i, 1; } } @@ -484,6 +502,7 @@ sub _data_struct_to_string { local $Data::Dumper::Terse = 1; local $Data::Dumper::Quotekeys = 0; + local $Data::Dumper::Sortkeys = 1; local $Data::Dumper::Indent = 0; local $Data::Dumper::Useqq = 1;