Data-Object-Args
view release on metacpan or search on metacpan
lib/Data/Object/Args.pm view on Meta::CPAN
if (defined $self->stashed->{$key}) {
return $key;
}
return undef;
}
method set($key, $val) {
return if not defined $key;
my $pos = $self->name($key);
return if not defined $pos;
return $self->stashed->{$pos} = $val;
}
method stashed() {
my $data = $self->stash('argv');
return $data;
}
method unnamed() {
my $list = [];
my $argv = $self->stash('argv');
my $data = +{reverse %{$self->named}};
for my $index (sort keys %$argv) {
unless (exists $data->{$index}) {
push @$list, $argv->{$index};
}
}
return $list;
}
1;
=encoding utf8
=head1 NAME
Data::Object::Args - Args Class
=cut
=head1 ABSTRACT
Args Class for Perl 5
=cut
=head1 SYNOPSIS
package main;
use Data::Object::Args;
local @ARGV = qw(--help execute);
my $args = Data::Object::Args->new(
named => { flag => 0, command => 1 }
);
# $args->flag; # $ARGV[0]
# $args->get(0); # $ARGV[0]
# $args->get(1); # $ARGV[1]
# $args->action; # $ARGV[1]
# $args->exists(0); # exists $ARGV[0]
# $args->exists('flag'); # exists $ARGV[0]
# $args->get('flag'); # $ARGV[0]
=cut
=head1 DESCRIPTION
This package provides methods for accessing C<@ARGS> items.
=cut
=head1 INTEGRATES
This package integrates behaviors from:
L<Data::Object::Role::Buildable>
L<Data::Object::Role::Proxyable>
L<Data::Object::Role::Stashable>
=cut
=head1 LIBRARIES
This package uses type constraints from:
L<Types::Standard>
=cut
=head1 ATTRIBUTES
This package has the following attributes:
=cut
=head2 named
named(HashRef)
This attribute is read-only, accepts C<(HashRef)> values, and is optional.
=cut
=head1 METHODS
This package implements the following methods:
=cut
lib/Data/Object/Args.pm view on Meta::CPAN
=back
=over 4
=item set example #2
# given: synopsis
$args->set('flag', '-?'); # -?
=back
=over 4
=item set example #3
# given: synopsis
$args->set('verbose', 1); # undef
# is not set
=back
=cut
=head2 stashed
stashed() : HashRef
The stashed method returns the stashed data associated with the object.
=over 4
=item stashed example #1
# given: synopsis
$args->stashed
=back
=cut
=head2 unnamed
unnamed() : ArrayRef
The unnamed method returns an arrayref of values which have not been named
using the C<named> attribute.
=over 4
=item unnamed example #1
package main;
use Data::Object::Args;
local @ARGV = qw(--help execute --format markdown);
my $args = Data::Object::Args->new(
named => { flag => 0, command => 1 }
);
$args->unnamed # ['--format', 'markdown']
=back
=over 4
=item unnamed example #2
package main;
use Data::Object::Args;
local @ARGV = qw(execute phase-1 --format markdown);
my $args = Data::Object::Args->new(
named => { command => 1 }
);
$args->unnamed # ['execute', '--format', 'markdown']
=back
=cut
=head1 AUTHOR
Al Newkirk, C<awncorp@cpan.org>
=head1 LICENSE
Copyright (C) 2011-2019, Al Newkirk, et al.
This is free software; you can redistribute it and/or modify it under the terms
of the The Apache License, Version 2.0, as elucidated in the L<"license
file"|https://github.com/iamalnewkirk/data-object-args/blob/master/LICENSE>.
=head1 PROJECT
L<Wiki|https://github.com/iamalnewkirk/data-object-args/wiki>
L<Project|https://github.com/iamalnewkirk/data-object-args>
L<Initiatives|https://github.com/iamalnewkirk/data-object-args/projects>
L<Milestones|https://github.com/iamalnewkirk/data-object-args/milestones>
L<Contributing|https://github.com/iamalnewkirk/data-object-args/blob/master/CONTRIBUTE.md>
L<Issues|https://github.com/iamalnewkirk/data-object-args/issues>
=cut
( run in 0.730 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )