use Moose;
no warnings 'uninitialized';
-our $VERSION = '0.30';
+our $VERSION = '0.40';
+$VERSION = eval $VERSION;
use Carp;
use Tie::IxHash ();
exclude='^(wibble|wobble)$' moniker_map='{ foo => "FOO" }' \
dbi:Pg:dbname=foodb myuname mypass
+Coderefs are also supported:
+
+ script/myapp_create.pl model CatalystModelName DBIC::Schema \
+ MyApp::SchemaClass create=static \
+ inflect_singular='sub { $_[0] =~ /\A(.+?)(_id)?\z/; $1 }' \
+ moniker_map='sub { join(q{}, map ucfirst, split(/[\W_]+/, lc $_[0])); }' \
+ dbi:mysql:foodb myuname mypass
+
See L<DBIx::Class::Schema::Loader::Base> for a list of options
Create a dynamic DBIx::Class::Schema::Loader-based Schema,
if $@;
}
- my @components =
- $self->_build_loader_components(delete $loader_args{components});
+ my @components = $self->_build_loader_components(
+ delete $loader_args{components},
+ $loader_args{use_namespaces},
+ );
$self->components(\@components);
%result = (
relationships => 1,
- (%loader_args ? %loader_args : ()),
(!$self->old_schema ? (
use_namespaces => 1
) : ()),
(@components ? (
components => \@components
- ) : ())
+ ) : ()),
+ (%loader_args ? %loader_args : ()),
);
$self->loader_args(\%result);
}
sub _build_loader_components {
- my ($self, $components) = @_;
+ my ($self, $components, $use_namespaces) = @_;
- my @components = $self->old_schema ? () : ('InflateColumn::DateTime');
+ my @components = $self->old_schema && (not $use_namespaces) ? ()
+ : ('InflateColumn::DateTime');
if ($components) {
$components = [ $components ] if !ref $components;
sub _is_struct {
my ($self, $val) = @_;
- return $val =~ /^\s*[[{]/;
+ return $val =~ /^\s*(?:sub|[[{])/;
}
sub _quote {
return $code if looks_like_number $code;
- return $code if $code =~ m{^[\w;:/]*\z};
+ return $code if not $self->_is_struct($code);
return eval "{no strict; $code}";
}
=head1 AUTHOR
-Brandon L Black, C<blblack@gmail.com>
+See L<Catalyst::Model::DBIC::Schema/AUTHOR> and
+L<Catalyst::Model::DBIC::Schema/CONTRIBUTORS>.
-Contributors:
+=head1 COPYRIGHT
-Rafael Kitover, C<rkitover at cpan.org>
+See L<Catalyst::Model::DBIC::Schema/COPYRIGHT>.
=head1 LICENSE