Class ArgumentParserImpl
- java.lang.Object
-
- net.sourceforge.argparse4j.internal.ArgumentParserImpl
-
- All Implemented Interfaces:
ArgumentContainer,ArgumentParser
public final class ArgumentParserImpl extends java.lang.Object implements ArgumentParser
The application code must not use this class directly.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classArgumentParserImpl.Candidateprivate static classArgumentParserImpl.SubjectBody
-
Field Summary
Fields Modifier and Type Field Description private static intADDITION_COSTprivate java.util.List<ArgumentGroupImpl>argGroups_private java.lang.Stringcommand_private ArgumentParserConfigurationImplconfig_private booleandefaultHelp_private java.util.Map<java.lang.String,java.lang.Object>defaults_private static intDELETION_COSTprivate java.lang.Stringdescription_private java.lang.Stringepilog_private ArgumentParserImplmainParser_private java.util.Map<java.lang.String,ArgumentImpl>namedArgIndex_private java.util.List<ArgumentImpl>namedArgs_private static java.util.regex.PatternNEG_NUM_PATTERNprivate booleannegNumFlag_private java.util.List<ArgumentImpl>posArgs_private static java.util.regex.PatternSHORT_OPTS_PATTERNprivate SubparsersImplsubparsers_private static intSUBSTITUTION_COSTprivate static intSWAP_COSTprivate java.lang.Stringusage_private java.lang.Stringversion_
-
Constructor Summary
Constructors Constructor Description ArgumentParserImpl(ArgumentParserConfigurationImpl config)ArgumentParserImpl(ArgumentParserConfigurationImpl config, java.lang.String command, ArgumentParserImpl mainParser)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidaccumulatePositionalArg(ParseState state, ArgumentImpl arg)This function accumulates arguments for a given positional argument.private voidaddArgDefaultIfNotSuppressed(java.util.Map<java.lang.String,java.lang.Object> opts, ArgumentImpl arg)ArgumentImpladdArgument(java.lang.String... nameOrFlags)Creates newArgument, adds it to this container and returns it.ArgumentImpladdArgument(ArgumentGroupImpl group, java.lang.String... nameOrFlags)ArgumentGroupaddArgumentGroup(java.lang.String title)Creates newArgumentGroupobject and adds to this parser and returns the object.private voidaddArgValue(java.util.Map<java.lang.String,java.lang.Object> opts, ArgumentImpl arg, java.lang.Object value)MutuallyExclusiveGroupaddMutuallyExclusiveGroup()Creates new mutually exclusive group,MutuallyExclusiveGroupobject, without title and adds to this parser and returns the object.MutuallyExclusiveGroupaddMutuallyExclusiveGroup(java.lang.String title)Creates new mutually exclusive group,MutuallyExclusiveGroupobject, and adds to this parser and returns the object.SubparsersImpladdSubparsers()ReturnsSubparsers.private voidaddUpperParserUsage(java.util.List<java.lang.String> opts, ArgumentParserImpl parser)Appends command, required named arguments and positional arguments inparsertooptsrecursively.private booleancheckConcatenatedShortOpts(java.lang.String term)Check that term forms a valid concatenated short options.private booleancheckDefaultGroup(java.util.List<ArgumentImpl> args)private voidcheckMutex(ArgumentImpl arg, ArgumentImpl[] groupUsed)Check that another option in mutually exclusive group has already been specified.private voidcheckRequiredArgument(ParseState state, java.util.Set<ArgumentImpl> used)private voidcheckRequiredMutex(ParseState state, ArgumentImpl[] used)ArgumentParserImpldefaultHelp(boolean defaultHelp)If defaultHelp istrue, the default values of arguments are printed in help message.ArgumentParserImpldescription(java.lang.String description)Set text to display before the argument help.ArgumentParserImplepilog(java.lang.String epilog)Sets the text to display after the argument help.private voidextendArgs(ParseState state, java.lang.String file)Extends arguments by reading additional arguments from file.private voidfillUserDataFromAttrs(java.lang.Object userData, java.util.Map<java.lang.String,java.lang.Object> attrs)private static java.util.List<ArgumentImpl>filterSuppressedArgs(java.util.Collection<ArgumentImpl> args)private booleanflagFound(ParseState state)Returns true if state.getArg() is flag.java.lang.StringformatHelp()Returns help message.private java.lang.StringformatUnrecognizedArgumentErrorMessage(ParseState state, java.lang.String args)Format message for "Unrecognized arguments" error.java.lang.StringformatUsage()Returns a brief description of how the program should be invoked on the command line.java.lang.StringformatVersion()Returns version string.private booleanfromFileFound(ParseState state)private java.lang.StringgetActualArgumentName(ArgumentImpl arg)java.lang.StringgetCommand()ArgumentParserConfigurationImplgetConfig()Get the configuration of this argument parser.java.lang.ObjectgetDefault(java.lang.String dest)Returns default value set byArgumentImpl.setDefault(Object)orsetDefault(String, Object).java.lang.StringgetFromFilePrefixChars()(package private) ArgumentParserImplgetMainParser()Returns main (parent) parser.java.lang.StringgetPrefixChars()java.lang.StringgetProg()(package private) TextWidthCountergetTextWidthCounter()voidhandleError(ArgumentParserException e)Prints usage and error message.voidhandleError(ArgumentParserException e, java.io.PrintWriter writer)Prints usage and error message to the given writer.(package private) booleanisDefaultHelp()private intlevenshtein(java.lang.String a, java.lang.String b)Calculates Damerau–Levenshtein distance between stringaandbwith given costs.(package private) java.lang.Stringlocalize(java.lang.String messageKey)NamespaceparseArgs(java.lang.String[] args)Parses command line arguments.voidparseArgs(java.lang.String[] args, java.lang.Object userData)Parses command line arguments.voidparseArgs(java.lang.String[] args, java.util.Map<java.lang.String,java.lang.Object> attrs)Parses command line arguments.voidparseArgs(java.lang.String[] args, java.util.Map<java.lang.String,java.lang.Object> attrs, java.lang.Object userData)Parses command line arguments.(package private) voidparseArgs(ParseState state, java.util.Map<java.lang.String,java.lang.Object> attrs)private voidparseArgsAtOffsetZero(java.lang.String[] args, java.util.List<java.lang.String> unknown, java.util.Map<java.lang.String,java.lang.Object> attrs)NamespaceparseArgsOrFail(java.lang.String[] args)Parses command line arguments, handling any errors.NamespaceparseKnownArgs(java.lang.String[] args, java.util.List<java.lang.String> unknown)Just likeArgumentParser.parseArgs(String[]), but parses only known arguments without throwing exception for unrecognized arguments.voidparseKnownArgs(java.lang.String[] args, java.util.List<java.lang.String> unknown, java.lang.Object userData)Just likeArgumentParser.parseArgs(String[], Object), but parses only known arguments without throwing exception for unrecognized arguments.voidparseKnownArgs(java.lang.String[] args, java.util.List<java.lang.String> unknown, java.util.Map<java.lang.String,java.lang.Object> attrs)Just likeArgumentParser.parseArgs(String[], Map), but parses only known arguments without throwing exception for unrecognized arguments.voidparseKnownArgs(java.lang.String[] args, java.util.List<java.lang.String> unknown, java.util.Map<java.lang.String,java.lang.Object> attrs, java.lang.Object userData)Just likeArgumentParser.parseArgs(String[], Map, Object), but parses only known arguments without throwing exception for unrecognized arguments.private voidparseKnownArgsCreatingUnknownIfNeeded(java.lang.String[] args, java.util.List<java.lang.String> unknown, java.util.Map<java.lang.String,java.lang.Object> attrs)NamespaceparseKnownArgsOrFail(java.lang.String[] args, java.util.List<java.lang.String> unknown)Just likeArgumentParser.parseArgsOrFail(String[]), but parses only known arguments without throwing exception for unrecognized arguments.private voidpopulateDefaults(java.util.Map<java.lang.String,java.lang.Object> opts)private voidprintArgumentHelp(java.io.PrintWriter writer, java.util.List<ArgumentImpl> args, int format_width)private voidprintArgumentUsage(java.io.PrintWriter writer, java.util.List<java.lang.String> opts, int offset, java.lang.String firstIndent, java.lang.String subsequentIndent, int format_width)private voidprintCandidates(java.lang.String body, java.util.List<ArgumentParserImpl.SubjectBody> subjects, java.io.PrintWriter writer)Prints most similar subjects in subjects to body.private voidprintCommandCandidates(java.lang.String command, java.io.PrintWriter writer)private voidprintFlagCandidates(java.lang.String flagBody, java.io.PrintWriter writer)voidprintHelp()Prints help message in stdout.voidprintHelp(java.io.PrintWriter writer)Prints help message in writer.voidprintUsage()Print a brief description of how the program should be invoked on the command line in stdout.voidprintUsage(java.io.PrintWriter writer)Print a brief description of how the program should be invoked on the command line in writer.private voidprintUsage(java.io.PrintWriter writer, int format_width)voidprintVersion()Prints version string in stdout.voidprintVersion(java.io.PrintWriter writer)Prints version string in writer.private voidprocessArg(java.util.Map<java.lang.String,java.lang.Object> res, ParseState state, ArgumentImpl arg, java.lang.String flag, java.lang.String embeddedValue)This function only handles a named argument.private voidprocessPositionalArgs(java.util.Map<java.lang.String,java.lang.Object> res, ParseState state)This function processes named arguments accumulated in state.private java.lang.StringremovePrefix(java.lang.String flag)private ArgumentImplresolveNextFlag(java.lang.String flag)Returns named argument ArgumentImpl which matches given flag.ArgumentParserImplsetDefault(java.lang.String dest, java.lang.Object value)Sets parser-level default value of attributedest.ArgumentParserImplsetDefaults(java.util.Map<java.lang.String,java.lang.Object> attrs)Sets parser-level default values fromattrs.private java.lang.StringsubstitutePlaceholder(java.lang.String src)Replace placeholder in src with actual value.ArgumentParserImplusage(java.lang.String usage)Sets the text to display as usage line.ArgumentParserImplversion(java.lang.String version)Sets version string.
-
-
-
Field Detail
-
SUBSTITUTION_COST
private static final int SUBSTITUTION_COST
- See Also:
- Constant Field Values
-
SWAP_COST
private static final int SWAP_COST
- See Also:
- Constant Field Values
-
DELETION_COST
private static final int DELETION_COST
- See Also:
- Constant Field Values
-
ADDITION_COST
private static final int ADDITION_COST
- See Also:
- Constant Field Values
-
namedArgIndex_
private final java.util.Map<java.lang.String,ArgumentImpl> namedArgIndex_
-
namedArgs_
private final java.util.List<ArgumentImpl> namedArgs_
-
posArgs_
private final java.util.List<ArgumentImpl> posArgs_
-
argGroups_
private final java.util.List<ArgumentGroupImpl> argGroups_
-
defaults_
private final java.util.Map<java.lang.String,java.lang.Object> defaults_
-
subparsers_
private final SubparsersImpl subparsers_
-
mainParser_
private final ArgumentParserImpl mainParser_
-
command_
private final java.lang.String command_
-
config_
private final ArgumentParserConfigurationImpl config_
-
usage_
private java.lang.String usage_
-
description_
private java.lang.String description_
-
epilog_
private java.lang.String epilog_
-
version_
private java.lang.String version_
-
defaultHelp_
private boolean defaultHelp_
-
negNumFlag_
private boolean negNumFlag_
-
NEG_NUM_PATTERN
private static final java.util.regex.Pattern NEG_NUM_PATTERN
-
SHORT_OPTS_PATTERN
private static final java.util.regex.Pattern SHORT_OPTS_PATTERN
-
-
Constructor Detail
-
ArgumentParserImpl
public ArgumentParserImpl(ArgumentParserConfigurationImpl config)
-
ArgumentParserImpl
public ArgumentParserImpl(ArgumentParserConfigurationImpl config, java.lang.String command, ArgumentParserImpl mainParser)
-
-
Method Detail
-
addArgument
public ArgumentImpl addArgument(java.lang.String... nameOrFlags)
Description copied from interface:ArgumentContainerCreates new
Argument, adds it to this container and returns it.The
nameOrFlagsis either a single name of positional argument or a list of option strings for named argument, e.g.fooor-f, --foo.- Specified by:
addArgumentin interfaceArgumentContainer- Parameters:
nameOrFlags- A name or a list of option strings of newArgument.- Returns:
Argumentobject.
-
addArgument
public ArgumentImpl addArgument(ArgumentGroupImpl group, java.lang.String... nameOrFlags)
-
addSubparsers
public SubparsersImpl addSubparsers()
Description copied from interface:ArgumentParserReturns
Subparsers.The method name is rather controversial because repeated call of this method does not add new
Subparsersobject. Instead, this method always returns sameSubparsersobject.Subparsersobject provides a way to add sub-commands.- Specified by:
addSubparsersin interfaceArgumentParser- Returns:
Subparsersobject.
-
addArgumentGroup
public ArgumentGroup addArgumentGroup(java.lang.String title)
Description copied from interface:ArgumentParserCreates new
ArgumentGroupobject and adds to this parser and returns the object.The
titleis printed in help message as a title of this group.ArgumentGroupprovides a way to conceptually group up command line arguments.- Specified by:
addArgumentGroupin interfaceArgumentParser- Parameters:
title- The title printed in help message.- Returns:
ArgumentGroupobject.
-
addMutuallyExclusiveGroup
public MutuallyExclusiveGroup addMutuallyExclusiveGroup()
Description copied from interface:ArgumentParserCreates new mutually exclusive group,
MutuallyExclusiveGroupobject, without title and adds to this parser and returns the object.- Specified by:
addMutuallyExclusiveGroupin interfaceArgumentParser- Returns:
MutuallyExclusiveGroupobject.
-
addMutuallyExclusiveGroup
public MutuallyExclusiveGroup addMutuallyExclusiveGroup(java.lang.String title)
Description copied from interface:ArgumentParserCreates new mutually exclusive group,
MutuallyExclusiveGroupobject, and adds to this parser and returns the object.The arguments added to this group are mutually exclusive; if more than one argument belong to the group are specified, an error will be reported. The
titleis printed in help message as a title of this group.- Specified by:
addMutuallyExclusiveGroupin interfaceArgumentParser- Parameters:
title- The title printed in help message.- Returns:
- The
MutuallyExclusiveGroupobject.
-
usage
public ArgumentParserImpl usage(java.lang.String usage)
Description copied from interface:ArgumentParserSets the text to display as usage line. By default, the usage line is calculated from the arguments this object contains.
If the given usage contains
${prog}string, it will be replaced with the program name given inArgumentParsers.newArgumentParser(String).- Specified by:
usagein interfaceArgumentParser- Parameters:
usage- usage text- Returns:
- this
-
description
public ArgumentParserImpl description(java.lang.String description)
Set text to display before the argument help.- Specified by:
descriptionin interfaceArgumentContainer- Specified by:
descriptionin interfaceArgumentParser- Parameters:
description- text to display before the argument help- Returns:
- this
-
epilog
public ArgumentParserImpl epilog(java.lang.String epilog)
Description copied from interface:ArgumentParserSets the text to display after the argument help.- Specified by:
epilogin interfaceArgumentParser- Parameters:
epilog- The text to display after the argument help.- Returns:
- this
-
version
public ArgumentParserImpl version(java.lang.String version)
Description copied from interface:ArgumentParserSets version string. It will be displayed
ArgumentParser.printVersion().If the given usage contains
${prog}string, it will be replaced with the program name given inArgumentParsers.newArgumentParser(String). This processed text will be printed without text-wrapping.- Specified by:
versionin interfaceArgumentParser- Parameters:
version- The version string.- Returns:
- this
-
defaultHelp
public ArgumentParserImpl defaultHelp(boolean defaultHelp)
Description copied from interface:ArgumentParserIf defaultHelp is
true, the default values of arguments are printed in help message.By default, the default values are not printed in help message.
- Specified by:
defaultHelpin interfaceArgumentParser- Parameters:
defaultHelp- Switch to display the default value in help message.- Returns:
- this
-
isDefaultHelp
boolean isDefaultHelp()
-
printArgumentHelp
private void printArgumentHelp(java.io.PrintWriter writer, java.util.List<ArgumentImpl> args, int format_width)
-
printHelp
public void printHelp()
Description copied from interface:ArgumentParserPrints help message in stdout.- Specified by:
printHelpin interfaceArgumentParser
-
printHelp
public void printHelp(java.io.PrintWriter writer)
Description copied from interface:ArgumentParserPrints help message in writer.- Specified by:
printHelpin interfaceArgumentParser- Parameters:
writer- Writer to print message.
-
checkDefaultGroup
private boolean checkDefaultGroup(java.util.List<ArgumentImpl> args)
-
formatHelp
public java.lang.String formatHelp()
Description copied from interface:ArgumentParserReturns help message.- Specified by:
formatHelpin interfaceArgumentParser- Returns:
- The help message.
-
printArgumentUsage
private void printArgumentUsage(java.io.PrintWriter writer, java.util.List<java.lang.String> opts, int offset, java.lang.String firstIndent, java.lang.String subsequentIndent, int format_width)
-
printUsage
public void printUsage()
Description copied from interface:ArgumentParserPrint a brief description of how the program should be invoked on the command line in stdout.- Specified by:
printUsagein interfaceArgumentParser
-
printUsage
public void printUsage(java.io.PrintWriter writer)
Description copied from interface:ArgumentParserPrint a brief description of how the program should be invoked on the command line in writer.- Specified by:
printUsagein interfaceArgumentParser- Parameters:
writer- Writer to print message.
-
printUsage
private void printUsage(java.io.PrintWriter writer, int format_width)
-
filterSuppressedArgs
private static java.util.List<ArgumentImpl> filterSuppressedArgs(java.util.Collection<ArgumentImpl> args)
- Parameters:
args- arguments to filter- Returns:
- filtered list of arguments
-
addUpperParserUsage
private void addUpperParserUsage(java.util.List<java.lang.String> opts, ArgumentParserImpl parser)Appends command, required named arguments and positional arguments inparsertooptsrecursively. Most upper parser stores first, just like post order traversal.- Parameters:
opts- Command, required named arguments and positional arguments.parser- The parser
-
formatUsage
public java.lang.String formatUsage()
Description copied from interface:ArgumentParserReturns a brief description of how the program should be invoked on the command line.- Specified by:
formatUsagein interfaceArgumentParser- Returns:
- Usage text.
-
setDefault
public ArgumentParserImpl setDefault(java.lang.String dest, java.lang.Object value)
Description copied from interface:ArgumentParserSets parser-level default value of attribute
dest.The parser-level defaults always override argument-level defaults.
- Specified by:
setDefaultin interfaceArgumentParser- Parameters:
dest- The attribute name.value- The default value.- Returns:
- this
-
setDefaults
public ArgumentParserImpl setDefaults(java.util.Map<java.lang.String,java.lang.Object> attrs)
Description copied from interface:ArgumentParserSets parser-level default values from
attrs.All key-value pair in
attrsare registered to parser-level defaults. The parser-level defaults always override argument-level defaults.- Specified by:
setDefaultsin interfaceArgumentParser- Parameters:
attrs- The parser-level default values to add.- Returns:
- this
-
getDefault
public java.lang.Object getDefault(java.lang.String dest)
Returns default value set byArgumentImpl.setDefault(Object)orsetDefault(String, Object). Please note that while parser-level defaults always override argument-level defaults while parsing, this method examines argument-level defaults first. If no default value is found, then check parser-level defaults.- Specified by:
getDefaultin interfaceArgumentParser- Parameters:
dest- attribute name of default value to get.- Returns:
- default value of given dest.
-
parseArgsOrFail
public Namespace parseArgsOrFail(java.lang.String[] args)
Description copied from interface:ArgumentParserParses command line arguments, handling any errors.
This is a shortcut method that combines
ArgumentParser.parseArgs(java.lang.String[])andArgumentParser.handleError(net.sourceforge.argparse4j.inf.ArgumentParserException). If the arguments can be successfully parsed, the resulted attributes are returned as aNamespaceobject. Otherwise, the program exits with a1return code.- Specified by:
parseArgsOrFailin interfaceArgumentParser- Parameters:
args- Command line arguments.- Returns:
Namespaceobject.
-
parseKnownArgsOrFail
public Namespace parseKnownArgsOrFail(java.lang.String[] args, java.util.List<java.lang.String> unknown)
Description copied from interface:ArgumentParserJust like
ArgumentParser.parseArgsOrFail(String[]), but parses only known arguments without throwing exception for unrecognized arguments. Ifunknownis not null, unrecognized arguments will be stored in it.- Specified by:
parseKnownArgsOrFailin interfaceArgumentParser- Parameters:
args- Command line arguments.unknown- Output variable to store unrecognized arguments, or null- Returns:
Namespaceobject.
-
parseArgs
public Namespace parseArgs(java.lang.String[] args) throws ArgumentParserException
Description copied from interface:ArgumentParserParses command line arguments.
The resulted attributes are returned as
Namespaceobject. This method must not alter the status of this parser and can be called multiple times.- Specified by:
parseArgsin interfaceArgumentParser- Parameters:
args- Command line arguments.- Returns:
Namespaceobject.- Throws:
ArgumentParserException- If an error occurred.
-
parseKnownArgs
public Namespace parseKnownArgs(java.lang.String[] args, java.util.List<java.lang.String> unknown) throws ArgumentParserException
Description copied from interface:ArgumentParserJust like
ArgumentParser.parseArgs(String[]), but parses only known arguments without throwing exception for unrecognized arguments. Ifunknownis not null, unrecognized arguments will be stored in it.- Specified by:
parseKnownArgsin interfaceArgumentParser- Parameters:
args- Command line arguments.unknown- Output variable to store unrecognized arguments, or null- Returns:
Namespaceobject.- Throws:
ArgumentParserException- If an error occurred.
-
parseArgs
public void parseArgs(java.lang.String[] args, java.util.Map<java.lang.String,java.lang.Object> attrs) throws ArgumentParserExceptionDescription copied from interface:ArgumentParserParses command line arguments.
Unlike
ArgumentParser.parseArgs(String[]), which returnsNamespaceobject, this method stores attributes in givenattrs.- Specified by:
parseArgsin interfaceArgumentParser- Parameters:
args- Command line arguments.attrs- Map object to store attributes.- Throws:
ArgumentParserException- If an error occurred.
-
parseKnownArgs
public void parseKnownArgs(java.lang.String[] args, java.util.List<java.lang.String> unknown, java.util.Map<java.lang.String,java.lang.Object> attrs) throws ArgumentParserExceptionDescription copied from interface:ArgumentParserJust like
ArgumentParser.parseArgs(String[], Map), but parses only known arguments without throwing exception for unrecognized arguments. Ifunknownis not null, unrecognized arguments will be stored in it.- Specified by:
parseKnownArgsin interfaceArgumentParser- Parameters:
args- Command line arguments.unknown- Output variable to store unrecognized arguments, or nullattrs- Map object to store attributes.- Throws:
ArgumentParserException- If an error occurred.
-
parseArgs
public void parseArgs(java.lang.String[] args, java.lang.Object userData) throws ArgumentParserExceptionDescription copied from interface:ArgumentParserParses command line arguments.
Unlike
ArgumentParser.parseArgs(String[]), which returnsNamespaceobject, this method stores attributes in givenuserData. The location to store value is designated usingArgannotations. User don't have to specifyArgfor all attributes: the missing attributes are just skipped. This method performs simpleListto generic array conversion. For example, user can assignList<Integer>attribute to generic arrayint[].- Specified by:
parseArgsin interfaceArgumentParser- Parameters:
args- Command line arguments.userData- Object to store attributes.- Throws:
ArgumentParserException- If an error occurred.
-
parseKnownArgs
public void parseKnownArgs(java.lang.String[] args, java.util.List<java.lang.String> unknown, java.lang.Object userData) throws ArgumentParserExceptionDescription copied from interface:ArgumentParserJust like
ArgumentParser.parseArgs(String[], Object), but parses only known arguments without throwing exception for unrecognized arguments. Ifunknownis not null, unrecognized arguments will be stored in it.- Specified by:
parseKnownArgsin interfaceArgumentParser- Parameters:
args- Command line arguments.unknown- Output variable to store unrecognized arguments, or nulluserData- Object to store attributes.- Throws:
ArgumentParserException- If an error occurred.
-
parseArgs
public void parseArgs(java.lang.String[] args, java.util.Map<java.lang.String,java.lang.Object> attrs, java.lang.Object userData) throws ArgumentParserExceptionDescription copied from interface:ArgumentParserParses command line arguments.
This is a combination of
ArgumentParser.parseArgs(String[], Map)andArgumentParser.parseArgs(String[], Object). The all attributes will be stored inattrs. The attributes specified inArgannotations will be also stored inuserData.- Specified by:
parseArgsin interfaceArgumentParser- Parameters:
args- Command line arguments.attrs- Map to store attributes.userData- Object to store attributes.- Throws:
ArgumentParserException- If an error occurred.
-
parseKnownArgs
public void parseKnownArgs(java.lang.String[] args, java.util.List<java.lang.String> unknown, java.util.Map<java.lang.String,java.lang.Object> attrs, java.lang.Object userData) throws ArgumentParserExceptionDescription copied from interface:ArgumentParserJust like
ArgumentParser.parseArgs(String[], Map, Object), but parses only known arguments without throwing exception for unrecognized arguments. Ifunknownis not null, unrecognized arguments will be stored in it.- Specified by:
parseKnownArgsin interfaceArgumentParser- Parameters:
args- Command line arguments.unknown- Output variable to store unrecognized arguments, or nullattrs- Map to store attributes.userData- Object to store attributes.- Throws:
ArgumentParserException- If an error occurred.
-
fillUserDataFromAttrs
private void fillUserDataFromAttrs(java.lang.Object userData, java.util.Map<java.lang.String,java.lang.Object> attrs)
-
parseKnownArgsCreatingUnknownIfNeeded
private void parseKnownArgsCreatingUnknownIfNeeded(java.lang.String[] args, java.util.List<java.lang.String> unknown, java.util.Map<java.lang.String,java.lang.Object> attrs) throws ArgumentParserException- Throws:
ArgumentParserException
-
parseArgsAtOffsetZero
private void parseArgsAtOffsetZero(java.lang.String[] args, java.util.List<java.lang.String> unknown, java.util.Map<java.lang.String,java.lang.Object> attrs) throws ArgumentParserException- Throws:
ArgumentParserException
-
checkConcatenatedShortOpts
private boolean checkConcatenatedShortOpts(java.lang.String term)
Check that term forms a valid concatenated short options. Note that this option does not actually process arguments. Therefore, true from this function does not mean all arguments in term are acceptable.- Parameters:
term- string to inspect- Returns:
- true if term forms a valid concatenated short options.
-
resolveNextFlag
private ArgumentImpl resolveNextFlag(java.lang.String flag) throws ArgumentParserException
Returns named argument ArgumentImpl which matches given flag. This function handles abbreviation as well. If flag is ambiguous,ArgumentParserExceptionwill be thrown. If flag does not match any ArgumentImpl, this function returns null.- Parameters:
flag- flag to match- Returns:
- ArgumentImpl which matches flag if it succeeds, or null
- Throws:
ArgumentParserException- if flag is ambiguous
-
parseArgs
void parseArgs(ParseState state, java.util.Map<java.lang.String,java.lang.Object> attrs) throws ArgumentParserException
- Throws:
ArgumentParserException
-
formatUnrecognizedArgumentErrorMessage
private java.lang.String formatUnrecognizedArgumentErrorMessage(ParseState state, java.lang.String args)
Format message for "Unrecognized arguments" error.- Parameters:
state- Current parser stateargs- Textual representation of unrecognized arguments to be included in the message as is.- Returns:
- formatted error message
-
checkMutex
private void checkMutex(ArgumentImpl arg, ArgumentImpl[] groupUsed) throws ArgumentParserException
Check that another option in mutually exclusive group has already been specified. If so, throw an exception.- Parameters:
arg- The argument currently processedgroupUsed- The cache of used argument in each groups.- Throws:
ArgumentParserException- If another option in mutually exclusive group has already been used.
-
processArg
private void processArg(java.util.Map<java.lang.String,java.lang.Object> res, ParseState state, ArgumentImpl arg, java.lang.String flag, java.lang.String embeddedValue) throws ArgumentParserExceptionThis function only handles a named argument.- Parameters:
embeddedValue- If named argument is given as "foo=bar" or "-fbar" (short option), embedded value is "bar". Otherwisenull- Throws:
ArgumentParserException
-
accumulatePositionalArg
private void accumulatePositionalArg(ParseState state, ArgumentImpl arg) throws ArgumentParserException
This function accumulates arguments for a given positional argument. It only accumulates arguments based on how many arguments can be consumed for given Argument object. The actual processing are done later.- Throws:
ArgumentParserException
-
processPositionalArgs
private void processPositionalArgs(java.util.Map<java.lang.String,java.lang.Object> res, ParseState state) throws ArgumentParserExceptionThis function processes named arguments accumulated in state.- Throws:
ArgumentParserException
-
flagFound
private boolean flagFound(ParseState state) throws ArgumentParserException
Returns true if state.getArg() is flag. Note that if "--" is met and not consumed, this function returns true, because "--" is treated as special named argument. If prefixFileChar is found in prefix of argument, read arguments from that file and expand arguments in state necessary.- Throws:
ArgumentParserException
-
fromFileFound
private boolean fromFileFound(ParseState state)
-
extendArgs
private void extendArgs(ParseState state, java.lang.String file) throws ArgumentParserException
Extends arguments by reading additional arguments from file.- Parameters:
state- Current parser state.file- File from which additional arguments are read.- Throws:
ArgumentParserException
-
checkRequiredArgument
private void checkRequiredArgument(ParseState state, java.util.Set<ArgumentImpl> used)
-
checkRequiredMutex
private void checkRequiredMutex(ParseState state, ArgumentImpl[] used)
-
populateDefaults
private void populateDefaults(java.util.Map<java.lang.String,java.lang.Object> opts)
-
addArgDefaultIfNotSuppressed
private void addArgDefaultIfNotSuppressed(java.util.Map<java.lang.String,java.lang.Object> opts, ArgumentImpl arg)
-
addArgValue
private void addArgValue(java.util.Map<java.lang.String,java.lang.Object> opts, ArgumentImpl arg, java.lang.Object value)
-
getActualArgumentName
private java.lang.String getActualArgumentName(ArgumentImpl arg)
-
removePrefix
private java.lang.String removePrefix(java.lang.String flag)
-
getConfig
public ArgumentParserConfigurationImpl getConfig()
Description copied from interface:ArgumentParserGet the configuration of this argument parser.
- Specified by:
getConfigin interfaceArgumentParser- Returns:
- The argument parser configuration.
-
getProg
public java.lang.String getProg()
-
printVersion
public void printVersion()
Description copied from interface:ArgumentParserPrints version string in stdout.- Specified by:
printVersionin interfaceArgumentParser
-
printVersion
public void printVersion(java.io.PrintWriter writer)
Description copied from interface:ArgumentParserPrints version string in writer.- Specified by:
printVersionin interfaceArgumentParser- Parameters:
writer- Writer to print version string.
-
formatVersion
public java.lang.String formatVersion()
Description copied from interface:ArgumentParserReturns version string.- Specified by:
formatVersionin interfaceArgumentParser- Returns:
- The version string.
-
handleError
public void handleError(ArgumentParserException e)
Description copied from interface:ArgumentParserPrints usage and error message.
Please note that this method does not terminate the program.
- Specified by:
handleErrorin interfaceArgumentParser- Parameters:
e- Error thrown byArgumentParser.parseArgs(String[]).
-
handleError
public void handleError(ArgumentParserException e, java.io.PrintWriter writer)
Description copied from interface:ArgumentParserPrints usage and error message to the given writer.
Please note that this method does not terminate the program.
- Specified by:
handleErrorin interfaceArgumentParser- Parameters:
e- Error thrown byArgumentParser.parseArgs(String[]).writer- The writer to which to write error messages
-
levenshtein
private int levenshtein(java.lang.String a, java.lang.String b)Calculates Damerau–Levenshtein distance between stringaandbwith given costs.- Parameters:
a- Stringb- String- Returns:
- Damerau–Levenshtein distance between
aandb
-
printFlagCandidates
private void printFlagCandidates(java.lang.String flagBody, java.io.PrintWriter writer)
-
printCommandCandidates
private void printCommandCandidates(java.lang.String command, java.io.PrintWriter writer)
-
printCandidates
private void printCandidates(java.lang.String body, java.util.List<ArgumentParserImpl.SubjectBody> subjects, java.io.PrintWriter writer)Prints most similar subjects in subjects to body. Similarity is calculated between body and eachArgumentParserImpl.SubjectBody.bodyin subjects.- Parameters:
body- String to compare.subjects- Target to be compared.writer- Output
-
substitutePlaceholder
private java.lang.String substitutePlaceholder(java.lang.String src)
Replace placeholder in src with actual value. The only known placeholder is ${prog}, which is replaced withconfig_.prog_.- Parameters:
src- string to be processed- Returns:
- the substituted string
-
getCommand
public java.lang.String getCommand()
-
getTextWidthCounter
TextWidthCounter getTextWidthCounter()
-
getPrefixChars
public java.lang.String getPrefixChars()
-
getFromFilePrefixChars
public java.lang.String getFromFilePrefixChars()
-
getMainParser
ArgumentParserImpl getMainParser()
Returns main (parent) parser.- Returns:
- The main (parent) parser. null if this object is a root parser.
-
localize
java.lang.String localize(java.lang.String messageKey)
-
-