package Getopt::Dakkar::Role::Piece;
use Getopt::Dakkar::Style qw(role);
has name => ( is => 'ro', isa => Str, required => 1 );
has class => ( is => 'ro', isa => ClassName, default => 'Getopt::Dakkar::Stash' );
has object => ( is => 'ro', isa => Object );
has op => ( is => 'ro', isa => Str|CodeRef );
sub make_stash($self,$argpack) {
if (my $o = $self->object) { return $o }
my $class = use_module($self->class);
if (my $from_argpack = $class->can('new_from_argpack')) {
return $class->$from_argpack($argpack);
}
else {
return $class->new();
}
}
requires 'parse';