| KiokuDB documentation | Contained in the KiokuDB distribution. |
KiokuDB::TypeMap::Shadow - Try a list of KiokuDB::TypeMaps in order
KiokuDB->new(
backend => ...,
typemap => KiokuDB::TypeMap::Shadow->new(
typemaps => [
$first,
$second,
],
),
);
This class is useful for performing mixin inheritance like merging of typemaps, by shadowing an ordered list.
This is used internally to overlay the user typemap on top of the KiokuDB::TypeMap::Default instance provided by the backend.
This differs from using includes in KiokuDB::TypeMap because that
inclusion is computed symmetrically, like roles.
| KiokuDB documentation | Contained in the KiokuDB distribution. |
#!/usr/bin/perl package KiokuDB::TypeMap::Shadow; use Moose; use namespace::clean -except => 'meta'; with qw(KiokuDB::Role::TypeMap); has typemaps => ( does => "ArrayRef[KiokuDB::Role::TypeMap]", is => "ro", required => 1, ); sub resolve { my ( $self, @args ) = @_; foreach my $typemap ( @{ $self->typemaps } ) { if ( my $entry = $typemap->resolve(@args) ) { return $entry; } } return; } __PACKAGE__->meta->make_immutable; __PACKAGE__ __END__