NAME

Term::CLI::Argument::TypeTiny - class for Type::Tiny validated arguments in Term::CLI

VERSION

version 0.060000

SYNOPSIS

use Term::CLI::Argument::TypeTiny;
use Types::Standard qw( ArrayRef Split );
use Types::Common::String qw( NonEmptyStr );

# accept a comma separated list of strings, split them and return an array
my $arg = Term::CLI::Argument::TypeTiny->new(
    name => 'arg1',
    typetiny => ArrayRef->of(NonEmptyStr)->plus_coercions(Split[qr/,/]),
    coerce => 1,
);

DESCRIPTION

Class for Type::Tiny validated arguments in Term::CLI(3p).

This class inherits from the Term::CLI::Argument(3p) class.

CLASS STRUCTURE

Inherits from:

Term::CLI::Argument(3p).

Consumes:

None.

CONSTRUCTORS

new
OBJ = Term::CLI::Argument::TypeTiny(
    name         => STRING,
    typetiny     => InstanceOf['Type::Tiny'],
    coerce       => Bool,
);

See also Term::CLI::Argument(3p). The typetiny argument is mandatory and must be a Type::Tiny(3p) object. It will be used to validate values.

If coerce is true, validate will call the Type::Tiny object's coercion method to coerce the input value.

ACCESSORS

See also Term::CLI::Argument(3p).

typetiny

The Type::Tiny object which will validate values.

coerce

Boolean that indicates whether validate will call the Type::Tiny object's coercion method to coerce the input value.

METHODS

See also Term::CLI::Argument(3p).

The following methods are added or overloaded:

validate

Overloaded from Term::CLI::Argument(3p).

EXAMPLES

  • Only allow positive or zero numbers for # of zombies seen. Allow non integers, in case they've lost bits and pieces:

    use Types::Common::Numeric qw( PositiveOrZeroNum);
    my $arg = Term::CLI::Argument::TypeTiny(
        name => 'zombies',
        typetiny => PositiveOrZeroNum
    );
  • Accept a URI, convert to a URI object:

    use Types::URI 'URI';
    my $arg = Term::CLI::Argument::TypeTiny(
        name => 'uri',
        typetiny => URI,
        coerce => 1
    );
  • Accept a file which must exist, convert to a Path::Tiny object:

    use Types::Path::Tiny 'File';
    my $arg = Term::CLI::Argument::TypeTiny(
        name => 'file',
        typetiny => File,
        coerce => 1
    );

SEE ALSO

Term::CLI::Argument(3p), Term::CLI(3p), Type::Tiny(3p).

AUTHOR

Diab Jerius <djerius@cpan.org>, 2022.

COPYRIGHT AND LICENSE

Copyright (c) 2022 Diab Jerius, Smithsonian Astrophysical Observatory

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See "perldoc perlartistic."

This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.