use strict;
use warnings;
use Carp qw(croak);
sub add_defaults {
my ($self, $name, $defaults) = @_;
croak "Defaults '${name}' is already defined" if $self->has_defaults($name);
if (ref $defaults ne 'HASH') {
croak "Expected hash reference but got '", ref $defaults, "'";
}
$self->_defaults->set($name => $defaults);
}
sub defaults {
my $self = shift;
return $self->_defaults->keys;
}
sub has_defaults {
my ($self, $name) = @_;
return $self->_defaults->exists($name);
}
sub get_defaults {
my ($self, $name) = @_;
if ($self->has_defaults($name)) {
return $self->_defaults->get($name);
}
croak "Can't find defaults '$name'";
}
1;
__END__
=head1 DESCRIPTION
Mixin for defaults
=cut