public class ArgsParserImpl extends Object implements ArgsParser
ArgsParser
interface. The
constructor only provides means to set the required attributes as the
attributes to be adjusted optionally are already sufficiently pre-configured.
For adjusting them, a flavor of the builder pattern is provided with which
you can easily chain the configuration of this instance; as them methods
return the instance of this class being configured. This helps to prevent the
telescoping constructor anti-pattern.
The SyntaxNotation
is pre-set with the
SyntaxNotation.REFCODES
notation.
The console width id pre-configured with the console's width as determined by
the SystemUtility.getConsoleWidth()
.
The standard out PrintStream
is pre-configured with the
System.out
PrintStream
.
The newline characters to be used for line breaks is "\r\n" on Windows
machines and "\"n" on all other machines as of the
SystemUtility.getLineBreak()
.
Constructor and Description |
---|
ArgsParserImpl(Condition aRootCondition)
Constructs the
ArgsParser instance with the given root
Condition and the default SyntaxNotation.REFCODES . |
Modifier and Type | Method and Description |
---|---|
void |
errorLn(String aLine)
Prints the given line to standard error with regards to to the console
width as specified by the
ArgsParser.withConsoleWidth(int) method. |
List<? extends Operand<?>> |
evalArgs(String[] aArgs)
Evaluates the provided command line arguments and determines the
according values by evaluating the root
Condition . |
Condition |
getRootCondition()
The root condition is the starting point node of a
Syntaxable
hierarchy to be traversed when determining the syntax for command line
arguments or when evaluating the command line arguments. |
void |
printBanner()
Prints the banner; the banner most probably is an ASCII art text block
which's look depends strongly on the taste of the author implementing
this interface.
|
void |
printCopyrightNote()
Prints the copyright note as specified by the
ArgsParser.withCopyrightNote(String) method; with regards to to the console
width as specified by the ArgsParser.withConsoleWidth(int) method. |
void |
printDescription()
Prints the description as set by the
ArgsParser.withDescription(String)
method with regards to the console width as specified by the
ArgsParser.withConsoleWidth(int) method. |
void |
printHelp()
Prints the help to the standard output specified by the
ArgsParser.withStandardOut(PrintStream) method. |
void |
printLicenseNote()
Prints the license note as specified by the
ArgsParser.withLicenseNote(String) method; with regards to to the console
width as specified by the ArgsParser.withConsoleWidth(int) method. |
void |
printLn()
Prints an empty line / a line break.
|
void |
printLn(String aLine)
Prints the given line to standard out with regards to to the console
width as specified by the
ArgsParser.withConsoleWidth(int) method. |
void |
printOptions()
Prints the
Option s (short- and the long-options), the
Switch es and the Operator and their description with
regards to the console width as specified by the
ArgsParser.withConsoleWidth(int) method. |
void |
printSeparatorLn()
Prints a separator line using the separator character as specified by the
ArgsParser.withSeparatorChar(char) method; with regards to to the console
width as specified by the ArgsParser.withConsoleWidth(int) method. |
void |
printUsage()
Prints the syntax as retrieved by the root
Condition# with
regards to the SyntaxNotation set by the
ArgsParser.withSyntaxNotation(SyntaxNotation) method; making use of the
usage label as passed by the ArgsParser.withUsageLabel(String) method. |
void |
reset() |
void |
setBannerFont(org.refcodes.textual.Font aBannerFont) |
void |
setBannerFontPalette(char[] aColorPalette) |
void |
setConsoleWidth(int aConsoleWidth)
Set the console with.
|
void |
setCopyrightNote(String aCopyrightNote)
Set the copyright note used by the
ArgsParser.printHelp() method when
writing out the copyright claim and make other adjustments with the
result (with regards to the builder pattern). |
void |
setDescription(String aDescription) |
void |
setErrorOut(PrintStream aErrorOut)
Set the error out
PrintStream and make other adjustments with the
result (with regards to the builder pattern). |
void |
setLicenseNote(String aLicenseNote)
Set the license note used by the
ArgsParser.printHelp() method when writing
out the licensing conditions. |
void |
setLineBreak(String aLineBreak)
Set the console's line break.
|
void |
setMaxConsoleWidth(int aMaxConsoleWidth)
Set the maximum console width to use in case the console width is greater
than the maximum you want.
|
void |
setName(String aName) |
void |
setSeparatorChar(char aSeparatorChar)
Set the character to be used when printing a separator line with the
ArgsParser.printSeparatorLn() method. |
void |
setStandardOut(PrintStream aStandardOut)
Set the standard out
PrintStream and make other adjustments with
the result (with regards to the builder pattern). |
void |
setSyntaxNotation(SyntaxNotation aSyntaxNotation)
Set the
SyntaxNotation . |
void |
setTitle(String aTitle) |
void |
setUsageLabel(String aUsageLabel)
Set the usage label used by the
ArgsParser.printHelp() method when writing
out the syntax. |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
evalArgs, withBannerFont, withBannerFontPalette, withConsoleWidth, withCopyrightNote, withDescription, withErrorOut, withLicenseNote, withLineBreak, withMaxConsoleWidth, withName, withSeparatorChar, withStandardOut, withSyntaxNotation, withTitle, withUsageLabel
public ArgsParserImpl(Condition aRootCondition)
ArgsParser
instance with the given root
Condition
and the default SyntaxNotation.REFCODES
.
The constructor only provides means to set the required attributes as the
attributes to be adjusted optionally are already sufficiently
pre-configured. For adjusting them, a flavor of the builder pattern is
provided with which you can easily chain the configuration of this
instance; as them methods return the instance of this class being
configured.aRootCondition
- The root condition being the node from which
parsing the command line arguments starts.public void setSyntaxNotation(SyntaxNotation aSyntaxNotation)
ArgsParser
SyntaxNotation
.setSyntaxNotation
in interface ArgsParser
aSyntaxNotation
- The SyntaxNotation
to set.public void setStandardOut(PrintStream aStandardOut)
ArgsParser
PrintStream
and make other adjustments with
the result (with regards to the builder pattern).setStandardOut
in interface ArgsParser
aStandardOut
- The standard out PrintStream
to set.public void setErrorOut(PrintStream aErrorOut)
ArgsParser
PrintStream
and make other adjustments with the
result (with regards to the builder pattern).setErrorOut
in interface ArgsParser
aErrorOut
- The error out PrintStream
to set.public void setConsoleWidth(int aConsoleWidth)
ArgsParser
SystemUtility.getConsoleWidth()
value, i.e. the console width is
set automatically to be the width of your terminal.setConsoleWidth
in interface ArgsParser
aConsoleWidth
- The width to set or -1 to let the parser
automatically determine the console width.public void setLineBreak(String aLineBreak)
ArgsParser
SystemUtility.getLineBreak()()
value.setLineBreak
in interface ArgsParser
public void setDescription(String aDescription)
setDescription
in interface org.refcodes.mixin.DescriptionAccessor.DescriptionMutator
public void setName(String aName)
setName
in interface org.refcodes.mixin.NameAccessor.NameMutator
public void setLicenseNote(String aLicenseNote)
ArgsParser
ArgsParser.printHelp()
method when writing
out the licensing conditions.setLicenseNote
in interface ArgsParser
aLicenseNote
- The license note printed out by the
ArgsParser.printHelp()
method.public void setUsageLabel(String aUsageLabel)
ArgsParser
ArgsParser.printHelp()
method when writing
out the syntax.setUsageLabel
in interface ArgsParser
aUsageLabel
- The usage label printed out by the
ArgsParser.printHelp()
method.public void setCopyrightNote(String aCopyrightNote)
ArgsParser
ArgsParser.printHelp()
method when
writing out the copyright claim and make other adjustments with the
result (with regards to the builder pattern).setCopyrightNote
in interface ArgsParser
aCopyrightNote
- The license note printed out by the
ArgsParser.printHelp()
method.public void setSeparatorChar(char aSeparatorChar)
ArgsParser
ArgsParser.printSeparatorLn()
method.setSeparatorChar
in interface ArgsParser
aSeparatorChar
- The character used by the
ArgsParser.printSeparatorLn()
method when printing out the line of
characters..public void setBannerFont(org.refcodes.textual.Font aBannerFont)
setBannerFont
in interface ArgsParser
public void setBannerFontPalette(char[] aColorPalette)
setBannerFontPalette
in interface ArgsParser
public void setTitle(String aTitle)
setTitle
in interface org.refcodes.mixin.TitleAccessor.TitleMutator
public void setMaxConsoleWidth(int aMaxConsoleWidth)
ArgsParser
setMaxConsoleWidth
in interface ArgsParser
public void printLicenseNote()
ArgsParser
ArgsParser.withLicenseNote(String)
method; with regards to to the console
width as specified by the ArgsParser.withConsoleWidth(int)
method.printLicenseNote
in interface ArgsParser
public void printCopyrightNote()
ArgsParser
ArgsParser.withCopyrightNote(String)
method; with regards to to the console
width as specified by the ArgsParser.withConsoleWidth(int)
method.printCopyrightNote
in interface ArgsParser
public List<? extends Operand<?>> evalArgs(String[] aArgs) throws UnknownArgsException, AmbiguousArgsException, SuperfluousArgsException, ParseArgsException
ArgsParser
Condition
.
In case of parsing failure, an according exception is thrown.
ATTENTION: This method tests(!) for superfluous command line arguments
being passed; e.g. command line arguments not being evaluated by any of
the Syntaxable
instance being traversed starting at the root
Condition
will be reported. Business logic therefore should
invoke this root node's ArgsParser.evalArgs(String[])
method instead of a
Condition
's Syntaxable.parseArgs(String[])
method; as
ignoring superfluous command line arguments will cause unexpected
behavior from the point of view of the invoker.evalArgs
in interface ArgsParser
aArgs
- The command line arguments to be evaluated.Operand
interfaces or its sub-types.UnknownArgsException
- Thrown in case not one command line argument
matched regarding the provided args vs. the expected args.AmbiguousArgsException
- Thrown in case at least one command line
argument is ambiguous regarding expected args vs. provided args.SuperfluousArgsException
- Thrown in case there were arguments
found not being used (superfluous arguments).ParseArgsException
- Thrown in case the provided command line
arguments do not respect the required syntax or cannot be
converted to the required typepublic void printHelp()
ArgsParser
ArgsParser.withStandardOut(PrintStream)
method. This method can make use of
the more atomic methods ArgsParser.printBanner()
, ArgsParser.printUsage()
,
ArgsParser.printDescription()
, ArgsParser.printOptions()
or
ArgsParser.printSeparatorLn()
to print a help text which's look depends
strongly on the taste of the author implementing this interface. In case
you dislike the implementing author's taste, feel free to overwrite this
method and compose your own help text from the building blocks such as
ArgsParser.printBanner()
, ArgsParser.printUsage()
,
ArgsParser.printDescription()
, ArgsParser.printOptions()
or
ArgsParser.printSeparatorLn()
printHelp
in interface ArgsParser
public void printUsage()
ArgsParser
Condition#
with
regards to the SyntaxNotation
set by the
ArgsParser.withSyntaxNotation(SyntaxNotation)
method; making use of the
usage label as passed by the ArgsParser.withUsageLabel(String)
method.printUsage
in interface ArgsParser
public void printDescription()
ArgsParser
ArgsParser.withDescription(String)
method with regards to the console width as specified by the
ArgsParser.withConsoleWidth(int)
method.printDescription
in interface ArgsParser
public void printLn(String aLine)
ArgsParser
ArgsParser.withConsoleWidth(int)
method.printLn
in interface ArgsParser
aLine
- The line to be printed.public void errorLn(String aLine)
ArgsParser
ArgsParser.withConsoleWidth(int)
method.errorLn
in interface ArgsParser
aLine
- The line to be printed.public void printLn()
ArgsParser
printLn
in interface ArgsParser
public void printSeparatorLn()
ArgsParser
ArgsParser.withSeparatorChar(char)
method; with regards to to the console
width as specified by the ArgsParser.withConsoleWidth(int)
method.printSeparatorLn
in interface ArgsParser
public void printBanner()
ArgsParser
printBanner
in interface ArgsParser
public void printOptions()
ArgsParser
Option
s (short- and the long-options), the
Switch
es and the Operator
and their description with
regards to the console width as specified by the
ArgsParser.withConsoleWidth(int)
method.printOptions
in interface ArgsParser
public Condition getRootCondition()
ArgsParser
Syntaxable
hierarchy to be traversed when determining the syntax for command line
arguments or when evaluating the command line arguments.getRootCondition
in interface ArgsParser
Condition
in which's syntax this parser is
based.public void reset()
reset
in interface org.refcodes.component.Resetable
Copyright © 2016. All rights reserved.