X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FStorage%2FBasic.pm;h=c44573d5be3d511d160aa29f26aa2cac98bcc5b0;hb=1f2883b2c4c74ee69739b6e5d272ab190c11f039;hp=f7771ea370b594f8d09ea2376b6119f7d3fb097e;hpb=d4b1b66748b64d36fd75f717eaff5bafbc43af06;p=gitmo%2FMooseX-Storage.git diff --git a/lib/MooseX/Storage/Basic.pm b/lib/MooseX/Storage/Basic.pm index f7771ea..c44573d 100644 --- a/lib/MooseX/Storage/Basic.pm +++ b/lib/MooseX/Storage/Basic.pm @@ -2,9 +2,7 @@ package MooseX::Storage::Basic; use Moose::Role; use MooseX::Storage::Engine; - -our $VERSION = '0.20'; -our $AUTHORITY = 'cpan:STEVAN'; +use String::RewritePrefix; sub pack { my ( $self, %args ) = @_; @@ -25,20 +23,23 @@ sub unpack { sub _storage_get_engine_class { my ($self, %args) = @_; - my $default = 'MooseX::Storage::Engine'; - - return $default + return 'MooseX::Storage::Engine' unless ( exists $args{engine_traits} && ref($args{engine_traits}) eq 'ARRAY' && scalar(@{$args{engine_traits}}) ); - my @roles = map { sprintf("%s::Trait::%s", $default, $_) } - @{$args{engine_traits}}; + my @roles = String::RewritePrefix->rewrite( + { + '' => 'MooseX::Storage::Engine::Trait::', + '+' => '', + }, + @{$args{engine_traits}} + ); Moose::Meta::Class->create_anon_class( - superclasses => [$default], + superclasses => ['MooseX::Storage::Engine'], roles => [ @roles ], cache => 1, )->name; @@ -51,6 +52,8 @@ sub _storage_construct_instance { $class->new( %$args, %i ); } +no Moose::Role; + 1; __END__ @@ -67,8 +70,6 @@ MooseX::Storage::Basic - The simplest level of serialization use Moose; use MooseX::Storage; - our $VERSION = '0.01'; - with Storage; has 'x' => (is => 'rw', isa => 'Int');