KiokuDB::TypeMap::Shadow - Try a list of L<KiokuDB::TypeMap>s in order


KiokuDB documentation Contained in the KiokuDB distribution.

Index


Code Index:

NAME

Top

KiokuDB::TypeMap::Shadow - Try a list of KiokuDB::TypeMaps in order

SYNOPSIS

Top

    KiokuDB->new(
        backend => ...,
        typemap => KiokuDB::TypeMap::Shadow->new(
            typemaps => [
                $first,
                $second,
            ],
        ),
    );

DESCRIPTION

Top

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__