diff options
author | dakkar <dakkar@thenautilus.net> | 2018-07-13 13:09:26 +0100 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2018-07-13 13:09:26 +0100 |
commit | 7fce4340deb0b6337bbd7ef6071ee42529db222d (patch) | |
tree | 3761e50b1c592ad816e5c7782f2183aeae5a6ca9 /lib/Getopt/Dakkar/Role/Piece.pm | |
parent | style (diff) | |
download | Getopt-Dakkar-7fce4340deb0b6337bbd7ef6071ee42529db222d.tar.gz Getopt-Dakkar-7fce4340deb0b6337bbd7ef6071ee42529db222d.tar.bz2 Getopt-Dakkar-7fce4340deb0b6337bbd7ef6071ee42529db222d.zip |
vaguely parse commands
Diffstat (limited to 'lib/Getopt/Dakkar/Role/Piece.pm')
-rw-r--r-- | lib/Getopt/Dakkar/Role/Piece.pm | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/Getopt/Dakkar/Role/Piece.pm b/lib/Getopt/Dakkar/Role/Piece.pm new file mode 100644 index 0000000..d981095 --- /dev/null +++ b/lib/Getopt/Dakkar/Role/Piece.pm @@ -0,0 +1,22 @@ +package Getopt::Dakkar::Role::Piece; +use Getopt::Dakkar::Style qw(role); +# VERSION +# ABSTRACT: a piece + +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'; |