Package picocli
Class CommandLine.Range
- java.lang.Object
-
- picocli.CommandLine.Range
-
- All Implemented Interfaces:
java.lang.Comparable<CommandLine.Range>
- Enclosing class:
- CommandLine
public static class CommandLine.Range extends java.lang.Object implements java.lang.Comparable<CommandLine.Range>
Describes the number of parameters required and accepted by an option or a positional parameter.- Since:
- 0.9.7
-
-
Field Summary
Fields Modifier and Type Field Description private int
anchor
private boolean
isUnspecified
boolean
isVariable
Deprecated.useisVariable()
insteadint
max
Deprecated.usemax()
insteadint
min
Deprecated.usemin()
insteadprivate java.lang.String
originalValue
private boolean
relative
-
Constructor Summary
Constructors Constructor Description Range(int min, int max, boolean variable, boolean unspecified, java.lang.String originalValue)
Constructs a new Range object with the specified parameters.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description (package private) static CommandLine.Range
adjustForType(CommandLine.Range result, CommandLine.Model.IAnnotatedElement member)
(package private) int
anchor()
int
compareTo(CommandLine.Range other)
boolean
contains(int value)
Returnstrue
if this Range includes the specified value,false
otherwise.static CommandLine.Range
defaultArity(java.lang.Class<?> type)
Deprecated.usedefaultArity(Field)
insteadstatic CommandLine.Range
defaultArity(java.lang.reflect.Field field)
Returns the default arityRange
: for interactive options/positional parameters, this is 0; foroptions
this is 0 for booleans and 1 for other types, forparameters
booleans have arity 0, arrays or Collections have arity "0..*", and other types have arity 1.private static CommandLine.Range
defaultArity(CommandLine.Model.IAnnotatedElement member)
private static CommandLine.Range
defaultParameterIndex(CommandLine.Model.ITypeInfo typeInfo)
boolean
equals(java.lang.Object object)
int
hashCode()
(package private) java.lang.String
internalToString()
Returns equivalent offormat("%s (%s)", originalValue, toString())
.boolean
isRelative()
Returnstrue
if this Range contains a relative index like"1+"
, orfalse
if this Range does not contain any relative indices.(package private) boolean
isRelativeToAnchor()
boolean
isUnresolved()
Returnstrue
if this range contains a relative index like"1+"
, or variables that have not been expanded yet,false
if this Range does not contain any variables or relative indices.boolean
isUnspecified()
Returnstrue
if this Range is a default value,false
if the user specified this value.(package private) boolean
isValidForInteractiveArgs()
Returns true for these ranges: 0 and 0..1.boolean
isVariable()
Returnstrue
if this range has no fixed upper bound.int
max()
Returns the upper bound of this range (inclusive), orInteger.MAX_VALUE
if this range has no upper bound.CommandLine.Range
max(int newMax)
Returns a new Range object with themax
value replaced by the specified value.int
min()
Returns the lower bound of this range (inclusive).CommandLine.Range
min(int newMin)
Returns a new Range object with themin
value replaced by the specified value.static CommandLine.Range
optionArity(java.lang.reflect.Field field)
Returns a newRange
based on theCommandLine.Option.arity()
annotation on the specified field, or the field type's default arity if no arity was specified.private static CommandLine.Range
optionArity(CommandLine.Model.IAnnotatedElement member)
java.lang.String
originalValue()
Returns the original String value that this range was constructed with.(package private) boolean
overlaps(CommandLine.Range index)
static CommandLine.Range
parameterArity(java.lang.reflect.Field field)
Returns a newRange
based on theCommandLine.Parameters.arity()
annotation on the specified field, or the field type's default arity if no arity was specified.private static CommandLine.Range
parameterArity(CommandLine.Model.IAnnotatedElement member)
(package private) static CommandLine.Range
parameterCapacity(CommandLine.Model.IAnnotatedElement member)
private static CommandLine.Range
parameterCapacity(CommandLine.Range arity, CommandLine.Range index)
static CommandLine.Range
parameterIndex(java.lang.reflect.Field field)
Returns a newRange
based on theCommandLine.Parameters.index()
annotation on the specified field.private static CommandLine.Range
parameterIndex(CommandLine.Model.IAnnotatedElement member)
private static int
parseInt(java.lang.String str, int defaultValue)
private int
size()
java.lang.String
toString()
CommandLine.Range
unspecified(boolean unspecified)
Returns a new Range object with theisUnspecified
value replaced by the specified value.static CommandLine.Range
valueOf(java.lang.String range)
Leniently parses the specified String as aRange
value and return the result.
-
-
-
Field Detail
-
min
@Deprecated public final int min
Deprecated.usemin()
instead
-
max
@Deprecated public final int max
Deprecated.usemax()
instead
-
isVariable
@Deprecated public final boolean isVariable
Deprecated.useisVariable()
instead
-
isUnspecified
private final boolean isUnspecified
-
originalValue
private final java.lang.String originalValue
-
relative
private final boolean relative
-
anchor
private final int anchor
-
-
Constructor Detail
-
Range
public Range(int min, int max, boolean variable, boolean unspecified, java.lang.String originalValue)
Constructs a new Range object with the specified parameters.- Parameters:
min
- minimum number of required parametersmax
- maximum number of allowed parameters (or Integer.MAX_VALUE if variable)variable
-true
if any number or parameters is allowed,false
otherwiseunspecified
-true
if no arity was specified on the option/parameter (value is based on type)originalValue
- the original value that was specified on the option or parameter
-
-
Method Detail
-
optionArity
public static CommandLine.Range optionArity(java.lang.reflect.Field field)
Returns a newRange
based on theCommandLine.Option.arity()
annotation on the specified field, or the field type's default arity if no arity was specified.- Parameters:
field
- the field whose Option annotation to inspect- Returns:
- a new
Range
based on the Option arity annotation on the specified field
-
optionArity
private static CommandLine.Range optionArity(CommandLine.Model.IAnnotatedElement member)
-
parameterArity
public static CommandLine.Range parameterArity(java.lang.reflect.Field field)
Returns a newRange
based on theCommandLine.Parameters.arity()
annotation on the specified field, or the field type's default arity if no arity was specified.- Parameters:
field
- the field whose Parameters annotation to inspect- Returns:
- a new
Range
based on the Parameters arity annotation on the specified field
-
parameterArity
private static CommandLine.Range parameterArity(CommandLine.Model.IAnnotatedElement member)
-
parameterIndex
public static CommandLine.Range parameterIndex(java.lang.reflect.Field field)
Returns a newRange
based on theCommandLine.Parameters.index()
annotation on the specified field.- Parameters:
field
- the field whose Parameters annotation to inspect- Returns:
- a new
Range
based on the Parameters index annotation on the specified field
-
parameterIndex
private static CommandLine.Range parameterIndex(CommandLine.Model.IAnnotatedElement member)
-
defaultParameterIndex
private static CommandLine.Range defaultParameterIndex(CommandLine.Model.ITypeInfo typeInfo)
-
adjustForType
static CommandLine.Range adjustForType(CommandLine.Range result, CommandLine.Model.IAnnotatedElement member)
-
defaultArity
public static CommandLine.Range defaultArity(java.lang.reflect.Field field)
Returns the default arityRange
: for interactive options/positional parameters, this is 0; foroptions
this is 0 for booleans and 1 for other types, forparameters
booleans have arity 0, arrays or Collections have arity "0..*", and other types have arity 1.- Parameters:
field
- the field whose default arity to return- Returns:
- a new
Range
indicating the default arity of the specified field - Since:
- 2.0
-
defaultArity
private static CommandLine.Range defaultArity(CommandLine.Model.IAnnotatedElement member)
-
defaultArity
@Deprecated public static CommandLine.Range defaultArity(java.lang.Class<?> type)
Deprecated.usedefaultArity(Field)
insteadReturns the default arityRange
foroptions
: booleans have arity 0, other types have arity 1.- Parameters:
type
- the type whose default arity to return- Returns:
- a new
Range
indicating the default arity of the specified type
-
size
private int size()
-
parameterCapacity
static CommandLine.Range parameterCapacity(CommandLine.Model.IAnnotatedElement member)
-
parameterCapacity
private static CommandLine.Range parameterCapacity(CommandLine.Range arity, CommandLine.Range index)
-
valueOf
public static CommandLine.Range valueOf(java.lang.String range)
Leniently parses the specified String as aRange
value and return the result. A range string can be a fixed integer value or a range of the formMIN_VALUE + ".." + MAX_VALUE
. If theMIN_VALUE
string is not numeric, the minimum is zero. If theMAX_VALUE
is not numeric, the range is taken to be variable and the maximum isInteger.MAX_VALUE
.- Parameters:
range
- the value range string to parse- Returns:
- a new
Range
value
-
parseInt
private static int parseInt(java.lang.String str, int defaultValue)
-
min
public CommandLine.Range min(int newMin)
Returns a new Range object with themin
value replaced by the specified value. Themax
of the returned Range is guaranteed not to be less than the newmin
value.- Parameters:
newMin
- themin
value of the returned Range object- Returns:
- a new Range object with the specified
min
value
-
max
public CommandLine.Range max(int newMax)
Returns a new Range object with themax
value replaced by the specified value. Themin
of the returned Range is guaranteed not to be greater than the newmax
value.- Parameters:
newMax
- themax
value of the returned Range object- Returns:
- a new Range object with the specified
max
value
-
unspecified
public CommandLine.Range unspecified(boolean unspecified)
Returns a new Range object with theisUnspecified
value replaced by the specified value.- Parameters:
unspecified
- theunspecified
value of the returned Range object- Returns:
- a new Range object with the specified
unspecified
value
-
isUnspecified
public boolean isUnspecified()
Returnstrue
if this Range is a default value,false
if the user specified this value.- Since:
- 4.0
-
isUnresolved
public boolean isUnresolved()
Returnstrue
if this range contains a relative index like"1+"
, or variables that have not been expanded yet,false
if this Range does not contain any variables or relative indices.- Since:
- 4.0
-
isRelative
public boolean isRelative()
Returnstrue
if this Range contains a relative index like"1+"
, orfalse
if this Range does not contain any relative indices.- Since:
- 4.3
-
anchor
int anchor()
- Returns:
1
for a relative index like"1+"
, orInteger.MAX_VALUE
for a relative index without an anchor, like"+"
- Since:
- 4.3
-
isRelativeToAnchor
boolean isRelativeToAnchor()
-
originalValue
public java.lang.String originalValue()
Returns the original String value that this range was constructed with.- Since:
- 4.3
-
min
public int min()
Returns the lower bound of this range (inclusive).- Since:
- 4.0
-
max
public int max()
Returns the upper bound of this range (inclusive), orInteger.MAX_VALUE
if this range has no upper bound.- Since:
- 4.0
-
isVariable
public boolean isVariable()
Returnstrue
if this range has no fixed upper bound.- Since:
- 4.0
-
contains
public boolean contains(int value)
Returnstrue
if this Range includes the specified value,false
otherwise.- Parameters:
value
- the value to check- Returns:
true
if the specified value is not less than the minimum and not greater than the maximum of this Range
-
equals
public boolean equals(java.lang.Object object)
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
internalToString
java.lang.String internalToString()
Returns equivalent offormat("%s (%s)", originalValue, toString())
.
-
compareTo
public int compareTo(CommandLine.Range other)
- Specified by:
compareTo
in interfacejava.lang.Comparable<CommandLine.Range>
-
isValidForInteractiveArgs
boolean isValidForInteractiveArgs()
Returns true for these ranges: 0 and 0..1.
-
overlaps
boolean overlaps(CommandLine.Range index)
-
-