NAME
Term::CLI::Element - generic parent class for elements in Term::CLI
VERSION
version 0.059000
SYNOPSIS
use Term::CLI::Element;
my $arg = Term::CLI::Element->new(name => 'varname');
DESCRIPTION
Generic parent class for command line elements in Term::CLI(3p). This is used by Term::CLI::Command(3p) and Term::CLI::Argument(3p) to provide basic, shared functionality.
This class inherits from Term::CLI::Base(3p) to provide the error
, term
, and set_error
methods.
CLASS STRUCTURE
Inherits from:
Term::CLI::Base(3p).
Consumes:
None.
CONSTRUCTORS
- new ( name => VARNAME ... )
-
Create a new Term::CLI::Element object and return a reference to it.
The name attribute is required.
METHODS
The Term::CLI::Element
class inherits accessors and methods from Term::CLI::Base(3p).
In addition, it defines:
- complete ( TEXT, STATE )
-
Return a list of strings that are possible completions for TEXT. By default, this method returns an empty list.
Sub-classes should probably override this.
STATE is a
HashRef
that contains the following elements:- processed => ArrayRef
-
More elaborate "parse tree": a list of hashes that represent all the elements on the command line that have already been processed by parent (
Term::CLI::Command
) objects.Example:
[ { element => InstanceOf['Term::CLI::Command'], value => 'show' }, { element => InstanceOf['Term::CLI::Command'], value => 'info' }, { element => InstanceOf['Term::CLI::Argument'], value => 'foo' }, ... ]
- unprocessed => ArrayRef
-
Refers to a list of words leading up to (but not including) the TEXT that have not yet been processed by parent objects.
For Term::CLI::Command objects this is typically a list of command line arguments and sub-commands.
For Term::CLI::Argument objects this will be empty.
- options => HashRef
-
Command line options that have been seen in the input line so far.
For most simple cases, you would only need to examine TEXT (and, for command objects, the
unprocessed
list).The
processed
list andoptions
hash can be used to implement context sensitive completion, however.
SEE ALSO
Term::CLI::Argument(3p), Term::CLI::Base(3p), Term::CLI::Command(3p), Term::CLI::ReadLine(3p), Term::CLI(3p).
AUTHOR
Steven Bakker <sbakker@cpan.org>, 2018.
COPYRIGHT AND LICENSE
Copyright (c) 2018 Steven Bakker
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.