Data-Identifier
view release on metacpan or search on metacpan
lib/Data/Identifier/Interface/Subobjects.pm view on Meta::CPAN
package Data::Identifier::Interface::Subobjects;
use v5.20;
use strict;
use warnings;
use parent 'Data::Identifier::Interface::Userdata';
use Carp;
use Scalar::Util qw(weaken);
our $VERSION = v0.28;
my %_types = (
db => 'Data::TagDB',
extractor => 'Data::URIID',
tagmap => 'Data::TagMap',
fii => 'File::Information',
store => 'File::FStore',
parent => __PACKAGE__,
lib/Data/Identifier/Interface/Subobjects.pm view on Meta::CPAN
my $weak = delete $opts{weak};
delete $opts{allow_registered}; # for future use, not yet documented.
foreach my $key (keys %_types) {
my $v = delete $opts{$key};
next unless defined $v;
croak 'Invalid type for key: '.$key unless eval {$v->isa($_types{$key})};
$storage->{$key} //= $v;
croak 'Missmatch for key: '.$key unless $storage->{$key} == $v;
weaken($storage->{$key}) if $weak;
}
croak 'Stray options passed' if scalar keys %opts;
return $self;
}
sub so_get {
my ($self, $name, %opts) = @_;
( run in 0.458 second using v1.01-cache-2.11-cpan-39bf76dae61 )