Fix a fail when very old Moose/CMOP is installed
[dbsrgits/DBIx-Class-Schema-Loader.git] / lib / DBIx / Class / Schema / Loader / Utils.pm
CommitLineData
cc4f11a2 1package # hide from PAUSE
2 DBIx::Class::Schema::Loader::Utils;
3
4use strict;
5use warnings;
61cd4bfc 6use Data::Dumper ();
cc4f11a2 7use Exporter 'import';
8
c38ec663 9our @EXPORT_OK = qw/split_name dumper dumper_squashed eval_without_redefine_warnings/;
cc4f11a2 10
11use constant BY_CASE_TRANSITION =>
12 qr/(?<=[[:lower:]\d])[\W_]*(?=[[:upper:]])|[\W_]+/;
13
14use constant BY_NON_ALPHANUM =>
15 qr/[\W_]+/;
16
17sub split_name($) {
18 my $name = shift;
19
20 split $name =~ /[[:upper:]]/ && $name =~ /[[:lower:]]/ ? BY_CASE_TRANSITION : BY_NON_ALPHANUM, $name;
21}
22
15efd63a 23sub dumper($) {
24 my $val = shift;
25
26 my $dd = Data::Dumper->new([]);
27 $dd->Terse(1)->Indent(1)->Useqq(1)->Deparse(1)->Quotekeys(0)->Sortkeys(1);
28 return $dd->Values([ $val ])->Dump;
29}
30
31sub dumper_squashed($) {
32 my $val = shift;
33
34 my $dd = Data::Dumper->new([]);
35 $dd->Terse(1)->Indent(1)->Useqq(1)->Deparse(1)->Quotekeys(0)->Sortkeys(1)->Indent(0);
36 return $dd->Values([ $val ])->Dump;
37}
38
c38ec663 39sub eval_without_redefine_warnings {
40 my $code = shift;
41
42 my $warn_handler = $SIG{__WARN__} || sub { warn @_ };
43 local $SIG{__WARN__} = sub {
44 $warn_handler->(@_)
45 unless $_[0] =~ /^Subroutine \S+ redefined/;
46 };
47 eval $code;
48 die $@ if $@;
49}
50
cc4f11a2 511;
52# vim:et sts=4 sw=4 tw=0: