ccs.utils
Class FlagArgsParser

java.lang.Object
  extended by ccs.utils.FlagArgsParser

public class FlagArgsParser
extends java.lang.Object

A simplistic command-line arguments parser. It accepts argument sets of the form -flag foo bar - ie. a flag argument starting with a '-', followed by zero or more non-flag parameter arguments pertaining to that flag. These may be followed by zero or more terminal parameters which aren't bound to a flag.


Constructor Summary
FlagArgsParser(java.lang.String[] args, java.util.Map<java.lang.String,java.lang.Integer> flags)
          Construct the parser.
FlagArgsParser(java.lang.String[] args, java.util.Map<java.lang.String,java.lang.Integer> flags, java.util.Map<java.lang.String,java.lang.Integer> varargs)
          Construct the parser.
 
Method Summary
 java.lang.String[] argsFor(java.lang.String flag, int nskip)
          Obtain the parameters of a flag, if present.
 boolean isExist(java.lang.String flag, int nskip)
          Whether a flag argument exists.
 java.lang.String[] terminals()
          Return the terminal parameters - parameters which aren't bound to a flag.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FlagArgsParser

public FlagArgsParser(java.lang.String[] args,
                      java.util.Map<java.lang.String,java.lang.Integer> flags)
Construct the parser.

Parameters:
args - The list of arguments.
flags - A map from every recognised flag, to the number of parameters it takes. Every flag must begin with '-'.

FlagArgsParser

public FlagArgsParser(java.lang.String[] args,
                      java.util.Map<java.lang.String,java.lang.Integer> flags,
                      java.util.Map<java.lang.String,java.lang.Integer> varargs)
Construct the parser.

Parameters:
args - The list of arguments.
flags - A map from every recognised flag, to the number of parameters it takes. Every flag must begin with '-'.
varargs - For recognised flags which take variable numbers of arguments, the maximum number it can use. This is used to distinguish between arguments attached to the last flag, and terminals not attached to any flag.
Method Detail

isExist

public boolean isExist(java.lang.String flag,
                       int nskip)
Whether a flag argument exists.

Parameters:
flag - The flag to look for.
nskip - The number of matches to skip over. This allows searching for repeated parameters.
Returns:
Whether a matching argument is present in the supplied args.

argsFor

public java.lang.String[] argsFor(java.lang.String flag,
                                  int nskip)
Obtain the parameters of a flag, if present.

Parameters:
flag - The flag value to search for. This MUST be a member of the flags map you passed to the ctor.
nskip - The number of matches to skip over. This allows for multiple instances of the same flag.
Returns:
The set of parameters if the flag is present; else null. At least the required number of parameters will be returned; what you do with any surplus is up to you.
Throws:
java.lang.IllegalArgumentException - if too few parameters are supplied.

terminals

public java.lang.String[] terminals()
Return the terminal parameters - parameters which aren't bound to a flag.