package Getopt::Dakkar::Role::Piece; use Getopt::Dakkar::Style qw(role); # VERSION # ABSTRACT: a piece 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';