#!/usr/bin/perl package KiokuDB::TypeMap::Default::Passthrough; use Moose::Role; use namespace::clean -except => 'meta'; with qw(KiokuDB::TypeMap::Default); sub _build_datetime_typemap { my $self = shift; $self->_create_typemap( isa_entries => { 'DateTime' => => { type => 'KiokuDB::TypeMap::Entry::Passthrough', intrinsic => 1, }, 'DateTime::Duration' => => { type => 'KiokuDB::TypeMap::Entry::Passthrough', intrinsic => 1, }, }, ); } sub _build_path_class_typemap { my $self = shift; $self->_create_typemap( isa_entries => { 'Path::Class::Entity' => { type => "KiokuDB::TypeMap::Entry::Passthrough", intrinsic => 1, }, }, ); } sub _build_uri_typemap { my $self = shift; $self->_create_typemap( isa_entries => { 'URI' => { type => "KiokuDB::TypeMap::Entry::Passthrough", intrinsic => 1, }, }, entries => { 'URI::WithBase' => { type => "KiokuDB::TypeMap::Entry::Passthrough", intrinsic => 1, }, }, ); } sub _build_authen_passphrase_typemap { my $self = shift; $self->_create_typemap( isa_entries => { # since Authen::Passphrase dynamically loads subcomponents based on # type, passthrough causes issues with the class not being defined # at load time unless explicitly loaded by the user. # this works around this issue #'Authen::Passphrase' => { # type => "KiokuDB::TypeMap::Entry::Passthrough", # intrinsic => 1, #}, 'Authen::Passphrase' => { type => "KiokuDB::TypeMap::Entry::Callback", intrinsic => 1, collapse => "as_rfc2307", expand => "from_rfc2307", }, }, ); } __PACKAGE__ __END__ =pod =head1 NAME KiokuDB::TypeMap::Default::Passthrough - A L instance suitable for L. =head1 DESCRIPTION This typemap lets most of the default data types be passed through untouched, so that their own L hooks may be invoked.