summaryrefslogtreecommitdiff
path: root/lib/Getopt/Dakkar/Role/Piece.pm
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2018-07-13 13:09:26 +0100
committerdakkar <dakkar@thenautilus.net>2018-07-13 13:09:26 +0100
commit7fce4340deb0b6337bbd7ef6071ee42529db222d (patch)
tree3761e50b1c592ad816e5c7782f2183aeae5a6ca9 /lib/Getopt/Dakkar/Role/Piece.pm
parentstyle (diff)
downloadGetopt-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.pm22
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';