The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Venus::Args - Args Class

ABSTRACT

Args Class for Perl 5

SYNOPSIS

package main;

use Venus::Args;

my $args = Venus::Args->new(
  named => { flag => 0, command => 1 }, # optional
  value => ['--help', 'execute'],
);

# $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]

DESCRIPTION

This package provides methods for accessing @ARGS items.

ATTRIBUTES

This package has the following attributes:

named

named(HashRef)

This attribute is read-write, accepts (HashRef) values, is optional, and defaults to {}.

INHERITS

This package inherits behaviors from:

Venus::Kind::Utility

INTEGRATES

This package integrates behaviors from:

Venus::Role::Accessible

Venus::Role::Buildable

Venus::Role::Proxyable

Venus::Role::Valuable

METHODS

This package provides the following methods:

default

default() (arrayref)

The default method returns the default value, i.e. @ARGV.

Since 0.01

default example 1
# given: synopsis;

my $default = $args->default;

# [@ARGV]

# ["--help", "execute"]

exists

exists(string $key) (boolean)

The exists method returns truthy or falsy if an index or alias value exists.

Since 0.01

exists example 1
# given: synopsis;

my $exists = $args->exists(0);

# 1
exists example 2
# given: synopsis;

my $exists = $args->exists('flag');

# 1
exists example 3
# given: synopsis;

my $exists = $args->exists(2);

# undef

get

get(string $key) (any)

The get method returns the value of the index or alias.

Since 0.01

get example 1
# given: synopsis;

my $get = $args->get(0);

# "--help"
get example 2
# given: synopsis;

my $get = $args->get('flag');

# "--help"
get example 3
# given: synopsis;

my $get = $args->get(2);

# undef

indexed

indexed() (hashref)

The indexed method returns a set of indices and values.

Since 0.01

indexed example 1
# given: synopsis;

my $indexed = $args->indexed;

# { "0" => "--help", "1" => "execute" }

name

name(string $key) (string | undef)

The name method resolves and returns the index for an index or alias, and returns undefined if not found.

Since 0.01

name example 1
# given: synopsis;

my $name = $args->name('flag');

set

set(string $key, any $data) (any)

The set method sets and returns the value of an index or alias.

Since 0.01

set example 1
# given: synopsis;

my $set = $args->set(0, '-?');

# "-?"
set example 2
# given: synopsis;

my $set = $args->set('flag', '-?');

# "-?"
set example 3
# given: synopsis;

my $set = $args->set('verbose', 1);

# undef

unnamed

unnamed() (arrayref)

The unnamed method returns a list of unaliases indices.

Since 0.01

unnamed example 1
package main;

use Venus::Args;

my $args = Venus::Args->new(
  named => { flag => 0, command => 1 },
  value => ['--help', 'execute', '--format', 'markdown'],
);

my $unnamed = $args->unnamed;

# ["--format", "markdown"]
unnamed example 2
package main;

use Venus::Args;

my $args = Venus::Args->new(
  named => { command => 1 },
  value => ['execute', 'phase-1', '--format', 'markdown'],
);

my $unnamed = $args->unnamed;

# ["execute", "--format", "markdown"]

AUTHORS

Awncorp, awncorp@cpan.org

LICENSE

Copyright (C) 2022, Awncorp, awncorp@cpan.org.

This program is free software, you can redistribute it and/or modify it under the terms of the Apache license version 2.0.