| KiokuDB documentation | Contained in the KiokuDB distribution. |
KiokuDB::Serializer - Standalone serializer object
Backend->new(
serializer => KiokuDB::Serializer::Storable->new( ... ),
);
This role is for objects which perform the serialization roles (e.g. KiokuDB::Backend::Serialize::Storable) but can be used independently.
This is used by KiokuDB::Backend::Serialize::Delegate and KiokuDB::Cmd::DumpFormatter.
| KiokuDB documentation | Contained in the KiokuDB distribution. |
#!/usr/bin/perl package KiokuDB::Serializer; use Moose::Role; use Carp qw(croak); use Moose::Util::TypeConstraints; use namespace::clean -except => 'meta'; with qw(KiokuDB::Backend::Serialize); requires "serialize_to_stream"; requires "deserialize_from_stream"; my %types = ( storable => "KiokuDB::Serializer::Storable", json => "KiokuDB::Serializer::JSON", yaml => "KiokuDB::Serializer::YAML", ); coerce( __PACKAGE__, from Str => via { my $class = $types{lc($_)} or croak "unknown format: $_";; Class::MOP::load_class($class); $class->new; }, from HashRef => via { my %args = %$_; my $class = $types{lc(delete $args{format})} or croak "unknown format: $args{format}"; Class::MOP::load_class($class); $class->new(%args); }, ); __PACKAGE__ __END__