X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FLoader%2FUtils.pm;h=a1350c7b383017114b6b72fe7e2cb1437d55bfab;hb=6947b5d664d1e4136dfe8d410f821e0a4bdaba31;hp=aaea3aacc2802f4db1eccd71e0aabba522f20eb4;hpb=cc4f11a26119d73c6af01bef015c6b5f1b98d189;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/lib/DBIx/Class/Schema/Loader/Utils.pm b/lib/DBIx/Class/Schema/Loader/Utils.pm index aaea3aa..a1350c7 100644 --- a/lib/DBIx/Class/Schema/Loader/Utils.pm +++ b/lib/DBIx/Class/Schema/Loader/Utils.pm @@ -3,9 +3,10 @@ package # hide from PAUSE use strict; use warnings; +use Data::Dumper (); use Exporter 'import'; -our @EXPORT_OK = qw/split_name/; +our @EXPORT_OK = qw/split_name dumper dumper_squashed eval_without_redefine_warnings/; use constant BY_CASE_TRANSITION => qr/(?<=[[:lower:]\d])[\W_]*(?=[[:upper:]])|[\W_]+/; @@ -19,5 +20,33 @@ sub split_name($) { split $name =~ /[[:upper:]]/ && $name =~ /[[:lower:]]/ ? BY_CASE_TRANSITION : BY_NON_ALPHANUM, $name; } +sub dumper($) { + my $val = shift; + + my $dd = Data::Dumper->new([]); + $dd->Terse(1)->Indent(1)->Useqq(1)->Deparse(1)->Quotekeys(0)->Sortkeys(1); + return $dd->Values([ $val ])->Dump; +} + +sub dumper_squashed($) { + my $val = shift; + + my $dd = Data::Dumper->new([]); + $dd->Terse(1)->Indent(1)->Useqq(1)->Deparse(1)->Quotekeys(0)->Sortkeys(1)->Indent(0); + return $dd->Values([ $val ])->Dump; +} + +sub eval_without_redefine_warnings { + my $code = shift; + + my $warn_handler = $SIG{__WARN__} || sub { warn @_ }; + local $SIG{__WARN__} = sub { + $warn_handler->(@_) + unless $_[0] =~ /^Subroutine \S+ redefined/; + }; + eval $code; + die $@ if $@; +} + 1; # vim:et sts=4 sw=4 tw=0: